一、集合概述
当我们在使用java进行编程开发时,经常会遇到一些需要集中存放的多个数据,这时我们可以选择“数组”或者“集合”,关于数组的知识可以参考上一篇文章,今天我们主要讲集合的使用。
集合和数组既然都是容器,它们有什么区别呢?
1、数组长度固定,集合长度可变。
数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了,而且生命周期也是不能改变的,还有数组也会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。而集合的长度是可变的,可以动态扩展容量,可以根据需要动态改变大小。
2、数组中只能是同一类型的元素且可以存储基本数据类型和对象。集合不能存放基本数据类型,只能存对象,类型可以不一致。
3、集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率
下面有一张集合家族图:
由上面的图片可以看出:Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口。
下面我们一步一步来介绍集合家族的成员。
二、Collection接口
Collection 接口是Set,List,Queue接口的父接口,该接口定义的方法可以也可用于操作子接口集合,具体方法见下图
Collection的使用:
1、增加和移除元素
importjava.util.ArrayList;
importjava.util.Collection;
/** * Collection的简单使用 */
publicclassTest{
publicstaticvoidmain(String[] args){
Collection collection=newArrayList();
//添加元素
collection.add("str1");
//虽然集合里不能放基本类型的数剧,但是jdk支持自动装箱
collection.add(4);
System.out.println("collection的长度:"+collection.size());
//删除指定元素
collection.remove(4);
System.out.println("collection的长度:"+collection.size());
//判断集合是否包含指定字符串
System.out.println("判断集合是否包含字符串:"+collection.contains("str1"));
collection.add("测试collection");
System.out.println("collection:"+collection); }
}
运行结果:collection的长度:2collection的长度:1判断集合是否包含字符串:falsecollection:[str1, 测试collection]
add()方法向Collection中增加元素,如果Collection结构改变了,作为add()方法的结果,将返回true。
如果一个Set的实例中已经存在了这个元素,那么不会重复增加,这个Set实例的结构也不会发生变化。
如果在一个List上调用这个方法,而这个List已经存在了这个元素,那么这个List将有两个这个元素。
remove()方法移除一个元素。如果Collection中存在这个元素并且被移除了,这个方法将返回true。如果元素不存在,将返回false。
2、检测一个Collection是否包含一个确定的元素
Collection接口提供contains()和containsAll()两个方法来检查一个Collection是否包含一个或多个元素。
3、迭代一个Collection
Collection collection = new HashSet();
//... add elements to the collection
Iterator iterator = collection.iterator();
while(iterator.hasNext()){
Object object = iterator.next();
//dosomething to object;
}
或者使用for循环
Collection collection =newHashSet();//... add elements to the collection