Collection集合
集合概述
集合是用来存储引用类型数据的容器,不能存储基本类型数据。集合只能保存对象。
对比:数组是用来存储同种类型数据的容器,数组元素既可以是基本类型,也可以是引用类型数据;
定义了数组后存储元素的个数就确定了,而集合中存储元素的数量是可以变化的。
集合分为两大类:
Collection集合,其特点是单个存储元素;
Map集合,特点是按 <键,值> 对的形式存储,如存储 <学生姓名,成绩>
-----------------------------------------------------------
Collection集合
Collection集合用于存储单个的数据,主要有两个接口 List 与 Set。
List集合存储有序可重复的数据;List集合 - 鹿先森JIAN - 博客园 (cnblogs.com)
Set集合存储无序不可重复的数据;Set集合 - 鹿先森JIAN - 博客园 (cnblogs.com)
-----------------------------------------------------
集合的基本操作包括:添加、删除元素,判断是否包含指定的元素,遍历集合中的元素。
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; public class Collection_api_Test { public static void main(String[] args) { /* 接口 = 实现对象 多态: 编译看左边,运行看右边 方法是否能够通过编译,看多态左边类中是否有对应的方法 执行方法,实际执行的是右边类中重写的方法 */ // Collection接口 变量 = new 实现类对象(); Collection<String> book = new ArrayList<>(); book.add("小灰的漫画算法"); book.add("算法第四版"); Collection<String> collection = new ArrayList<>(); collection.add("Java从入门到精通"); collection.add("Java从入门到精通"); collection.add("计算机网络"); // addAll(Collection<? extends E> c) 将c集合中的所有元素都添加到当前集合中 collection.addAll(book); // 打印,默认调用了 toArray()方法 System.out.println(collection); // [Java从入门到精通, Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版] // contains(Object o) 判断是否包含指定的元素,则返回 true boolean flag1 = collection.contains("计算机网络"); System.out.println(flag1); // true boolean flag2 = collection.contains("深入了解Java虚拟机"); System.out.println(flag2); // false // remove(Object o) 移除指定元素,如果存在多个,只删第一个 System.out.println("移除前:" + collection); // 移除前:[Java从入门到精通, Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版] collection.remove("Java从入门到精通"); System.out.println("移除后:" + collection); // 移除后:[Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版] // 返回此 collection 中的元素数量 size() System.out.println("元素个数:" + collection.size()); // 元素个数:4 /* // 判空 isEmpty() System.out.println(collection.isEmpty()); // 清空 clear() collection.clear(); System.out.println(collection.isEmpty()); */ // Object[] toArray() 方法 Object[] objects = collection.toArray(); //System.out.println(objects.length); // 数组长度 // 遍历数组 for (int i = 0; i < objects.length; i++) { System.out.println(objects[i]); } // <T> T[] toArray(T[] a) 方法 // 注意:空数组的长度 >= 集合元素个数,否则shuzu仍然为空 String[] shuzu = new String[5]; // 先初始化一个空数组 System.out.println(Arrays.toString(shuzu)); // [null, null, null, null, null] // 把集合转换为数组 String[] array = collection.toArray(shuzu); // 打印数组 System.out.println(Arrays.toString(shuzu)); // [Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版, null] // 打印集合 System.out.println(Arrays.toString(array)); // [Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版, null] // 判断是否相等 System.out.println(shuzu == array); // true } }
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* Collection接口对于单列集合提供的一种通用的遍历方式 这种遍历方式,适用于所有的单列集合,不考虑是否有索引 Iterator<E> iterator()方法可以返回集合的迭代器. 迭代器有一个游标, 刚刚获得迭代器时游标指向第一个元素的前面, 调用迭代器的 hasNext()方法,判断游标后面是否还有元素; 调用 next()方法返回游标后面的元素, 然后游标下移; */ public class Collection_Iterator_Test { public static void main(String[] args) { Collection<String> collection = new ArrayList<>(); collection.add("Java"); collection.add("Java"); collection.add("计算机网络"); //1.获取一个迭代器对象,迭代器对象中包含了该集合的所有元素内容 Iterator<String> iterator = collection.iterator(); // boolean hasNext() 如果仍有元素可以迭代,则返回 true // E next() 返回迭代的下一个元素 //遍历输出 while (iterator.hasNext()){ System.out.println(iterator.next()); } //遍历删除所有重复元素 while (iterator.hasNext()){ String s = iterator.next(); //返回下个元素 if ( "Java".equals(s) ){ iterator.remove(); //迭代删除 } } } }