标签:
一、ArrayList的使用(略)
(一)、Collection是集合类的基本接口
主要方法:
public interface Collection<E>{ boolean add(E element);//向集合中添加元素,E代表泛型 Iterator<E> iterator();//返回实现了Iterator接口的对象 }
关于:Iterator之后讲解。
(二)、实现了Collection的子类:
List:按照顺序插入保存元素。 Set:该容器内不能有重复的元素 Queue:按照队列的规则决定对象的顺序
(三)、Map接口
定义:一组成对的“键值对”对象,使用key查找value
注:这是单独的接口,不属于Collection
(四)、根据上诉分析使用容器
1、ArrayList向上转型为Collection,并通过Collection添加处理数据。(运用到的技术:父类引用指向子类对象,调用子类的方法)
public class UpToCollection { public static void main(String [] args){ ArrayList<Integer> arrayList = new ArrayList(); for(int i=0; i<5; ++i){ arrayList.add(i); } Collection<Integer> collection = arrayList; collection.add(5); //这里使用了foreach循环,只要实现了Iterator接口就能够使用foreach //Collection没有List的get方法,需要用Iterator来进行遍历 for(Integer i: collection){ System.out.println(i); } } }
2、添加一组元素
public class AddElementToCollection { public static void main(String[]args){ Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6)); //知识点1:利用Arrays这个静态类,将数组,或者一列数字转换为List //知识点2:ArrayList可以嵌套List创建 /*知识点3:为什么不可以Collection<Integer> collection = * Arrays.asList(1,2,3,4,5,6);,发现创建并没有问题,但是到下文的时候使用 * collection.addAll(Arrays.asList(datas));是会报错的 * 原因:因为Arrays.asList(1,2,3,4,5,6)创建的List是固定长度的List * 所以是无法执行add()方法的。 */ Integer [] datas = {7,8,9,10}; /*知识点4:必须使用Integer作为类,不能使用int,否则会报错 *因为之前Collection<Integer> collection,已经将泛型定为Integer *所以不能使用引用类型,得到输入的泛型是什么,就需要建立什么类的数组 */ collection.addAll(Arrays.asList(datas)); for(Integer i: collection){ System.out.println(i); } //上文为通过Collection往List中添加一组数据(数组,或者自定义的数据),下文介绍另一种方法 Collections.addAll(collection, 11,12,13,14,15,16); Collections.addAll(collection, datas); //注:这是Collections类不是Collection类 } }
Collection添加元素的方法 优点:方法运行效率快。 缺点:但是需要创建一个Collection类,来作为对象
Collections添加元素的方法 优点:方便,不需要创建Collection类。
3、Collection类型的作用:统一类型添加,删除。。。(统一遍历是由Iterator确定的)
public class CollectionEffect { //统一各种容器,只需要一种方法就能添加,删除 public static void main(String[] args){ print(fill(new ArrayList<String>())); print(fill(new HashSet<String>())); print(fill(new HashMap<String,String>())); } //Collection接口的集合 public static Collection<String> fill(Collection<String> c){ c.add("dog"); c.add("cat"); c.add("pig"); return c; } //重载fill方法,提供Map接口 public static Map<String,String> fill(Map<String,String> map){ map.put("dog", "pig"); map.put("cat","small"); return map; } public static void print(Collection<String> c){ } public static void print(Map<String,String> map){ } }
作用:统一遍历各种容器
接口方法:
public interface Iterator<E>{ E next();//获取下一个元素 boolean hasNext();//查看是否存在下一个元素 void remove();//移除元素 }
Thinking in Java——集合(Collection)
标签:
原文地址:http://www.cnblogs.com/rookiechen/p/5509546.html