Java 集合就像一种容器,可以把多个对象的引用放入容器中。
Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组
Java 集合可分为 Set、List 和 Map 三种体系 :
Set:无序、不可重复的集合,set又是以map为底层实现
List:有序,可重复的集合,list接口是以数组为底层实现,是有序的
Map:具有映射关系的集合,key-value(键值对),map接口底层是hash函数,无续(不是随机)
集合类:
Collection接口:
Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 集合:
public class TestCollection {
@Test
public void testCollection1() {
//声明一个集合指向子接口的实现类
Collection collection=new ArrayList();
//1.size()返回集合元素个数
System.out.println(collection.size());
//2.add(Object obj):向集合中添加元素
collection.add(123);
collection.add("A");
collection.add("B");
collection.add(new Date());
System.out.println("集合的长度"+collection.size());
//3.addAll(Collection (collection):将collection中所有元素添加到当前集合
Collection coll1=Arrays.asList(123);
collection.addAll(coll1);
System.out.println(collection.size());
//查看集合元素
System.out.println(collection);
//4.isEmpty():查看几何元素是否为空
System.out.println(collection.isEmpty());
//5.clear():清空集合元素
collection.clear();
System.out.println(collection.isEmpty());
System.out.println(collection.size());
}
@Test
public void testCollection2() {
//声明一个集合指向子接口的实现类
Collection collection=new ArrayList();
//2.add(Object obj):向集合中添加元素
collection.add(123);
collection.add("A");
collection.add("B");
collection.add(new Date());
collection.add(new Person("C",20));
System.out.println(collection);
//6.contains(Object obj):是否包含指定的元素,包含返回true,否则返回false
//判断依据:根据元素所在的equal方法进行判断
boolean b1 = collection.contains(123);
System.out.println(b1);
//如果存入的元素是自定义的对象,要求必须重写equal()方法
boolean b2=collection.contains(new Person("C",20));
System.out.println(b2);
//7.containAll(Collection collection):判断当前集合是否包含collection所有中的元素
Collection coll1=new ArrayList();
coll1.add(123);
coll1.add("A");
boolean b3=collection.containsAll(coll1);
System.out.println(b3);
//8.retainAll(Collection collection):返回当前集合中与形参集合共有的元素给当前集合
collection.retainAll(coll1);
System.out.println(collection);
//9.remove(Object obj):删除集合中的元素,删除成功返回true,反之false
boolean b4=collection.remove(new Date());
System.out.println(b4);
}
@Test
public void testCollection3() {
//声明一个集合指向子接口的实现类
Collection coll=new ArrayList();
//2.add(Object obj):向集合中添加元素
coll.add(123);
coll.add("A");
coll.add("B");
coll.add(new Date());
coll.add(new Person("C",20));
Collection coll1=new ArrayList();
coll1.add(123);
coll1.add("A");
//10.removeAll(Collection coll):从当前集合中删除包含在coll中的元素
//coll.removeAll(coll1);
System.out.println(coll);
//11.equal(Object obj):判断集合中所以有的元素是否相同
Collection coll2=new ArrayList();
coll2.add(123);
coll2.add("A");
System.out.println(coll1.equals(coll2));
//12.toArray():将集合转化为数组
Object[] objects = coll.toArray();
System.out.println("------");
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
//13.interator():返回一个Iterator接口实现类的对象
Iterator iterator = coll.iterator();
}
}
使用 Iterator 接口遍历集合元素
Iterator 接口主要用于遍历 Collection 集合中的元素,Iterator 对象也被称为迭代器。
Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提供了遍历 Collection 集合元素的统一编程接口。
Iterator 仅用于遍历集合,Iterator 本身并不提供存放对象的能力。
如果需要创建 Iterator 对象,则必须有一个被迭代的集合。
public class TestIterator {
//1.使用迭代器方式实现集合的遍历
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add("jack");
coll.add("rose");
coll.add(123);
coll.add(new Date());
coll.add(new Person("zhangsan",20));
Iterator iterator = coll.iterator();
//判断有没有下一个元素
while(iterator.hasNext()) {
//next()取出集合的元素
System.out.println(iterator.next());
}
}
@Test
public void test2 () {
Collection coll = new ArrayList();
coll.add("jack");
coll.add("rose");
coll.add(123);
coll.add(new Date());
coll.add(new Person("zhangsan",20));
Iterator iterator = coll.iterator();
for(Object obj : coll) {
System.out.println(obj);
}
System.out.println("=========");
}
}
JDK提供了 foreach 循环迭代访问 Collection