您的位置:首页 > 编程语言 > Java开发

java中的集合的根接口Collection以及迭代器

2017-12-15 21:07 375 查看
集合

集合和数组相同的是二者都是一个集合

不同的是数组中只能装同一类型的数据,并且数组的长度一旦确定下来就不能再改变了,集合中可以装不同类型的数据,但是只能装引用数据类型,当然基本数据类型自动装箱后也可以装进去,另外集合的长度是可以改变的.

集合的分类:Collection是集合的根接口,它有俩子接口Set和List;Set下面又有三个实现类:ArrayList,LinkedList和Verctor;Set下面有俩实现类:HashSet和TreeSet.

具体的关系入下图:



我们先来学习一下Collection,首先Collection是个接口,所以Collection是没有构造方法的,不能直接进行初始化,这里我们利用多态的方式进行初始化,根据Collection的实现类ArrayList来创建Collection的对象.

Collection collection =  new ArrayList();//根据实现类来定义接口
collection.add("a");//往集合中添加元素
collection.add("b");//往集合中添加元素用add
collection.add(18);
//能装基本数据类型是因为系统对参数做了个向上转型,将所有括号中的参数的数据类型转换为Object


下面我们来学习一下collection的一些常用的API

1.添加

注意add()和addAll()的区别

Collection collection =  new ArrayList();//根据实现类来定义接口
Collection collection1 =  new ArrayList();//根据实现类来定义接口
collection.add("a");
collection.add("b");
collection.add("c");
collection1.add("d");
collection1.add("e");
collection.add(collection1);//这里是把collection1作为一个元素传入集合
collection.addAll(collection1);//这里是把collection1中的所有元素传入collection.


2.

Collection collection =  new ArrayList();
collection.add("a");
int number=  collection.size()//获取集合的长度
boolean bool = collection.isEmpty;//判断集合是否为空
boolean bool1 =collection.contains("a");//判断集合是否包含字符串"a"
collection.remove("a");//删除集合中"a",如果集合中有要删除的对象则返回true,反之返回false
collection.clear();//清空集合


3.remove()和removeAll()的区别

Collection collection =  new ArrayList();
collection.add("a");
collection.add("b");
collection.add("c");
collection.add("d");
Collection collection1 =  new ArrayList();
collection.add("c");
collection.add("d");
collection.remove(collection);//返回值为false,因为collection没有collection1这个元素
collection.removeAll(collection1);//返回值为true,因为这个是把collection1中的所有元素移除,也就是说移除collection与collection1中的公共部分


4.retainAll

Collection collection =  new ArrayList();
collection.add("a");
collection.add("b");
collection.add("c");
collection.add("d");
Collection collection1 =  new ArrayList();
collection.add("c");
collection.add("d");
collection.retainAll(conllection1);//保留collection和collection1的公共部分,如果有collection改动了返回值就为true,否则就为false


迭代器

迭代器(Iterator)模式,又叫做游标模式,它的含义是,提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。

每一个集合都用一个迭代器,用来遍历集合的.

迭代器能遍历数组主要需要用到两个API:hasNext()和next();

hasNext()返回值是一个boolean类型,当返回true,就说明集合中还有元素可以遍历,next()是用来获取这个元素的

Collection collection0 =  new ArrayList();
collection0.add("a");
collection0.add("b");
collection0.add("c");
collection0.add("d");
System.out.println(collection0);//系统在输出引用数据类型的数据时会自动调用.toString()方法


输出结果是[a,b,c,d];

下面我们来遍历

Iterator iterator = collection.iterator();//用集合调用获取迭代器的方法来得到迭代器
while(iterator.hasNext())//循环条件是集合中没有可遍历的元素
{
System.out.println(iterator.next)//打印出可遍历的元素
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐