[学习笔记]Java集合框架以及Collection顶层接口
集合框架概述数组容器由于无法扩展容量,也没有更多的功能可以使用,而Java中的另一种容器:集合,就能满足这些要求。特点集合中的每一个元素都是对象,存储的实际上是对象的引用。集合长度可扩展,并且是自动的。根据数据结构的不同,集合分为很多种,每一种都有各自的特点。集合的最上层是Collection接口,集合最基本的增删改查方法均在该接口中有所体现。集合中
   ·  
 集合框架
概述
 数组容器由于无法扩展容量,也没有更多的功能可以使用,而Java中的另一种容器:集合,就能满足这些要求。
特点
- 集合中的每一个元素都是对象,存储的实际上是对象的引用。
 - 集合长度可扩展,并且是自动的。
 - 根据数据结构的不同,集合分为很多种,每一种都有各自的特点。
 - 集合的最上层是Collection接口,集合最基本的增删改查方法均在该接口中有所体现。
 - 集合中如果没有使用泛型,则默认存储的是Object类,所有的对象均向上转型存入集合,取出使用时需要向下转型,并可能有类型转换异常。所以建议配合泛型使用集合。
 
集合框架UML类图
Collection集合(顶层接口)
概述
 该集合是Java集合框架的顶层接口,其主要子接口为List接口和Set接口。
常用方法
- 添加
boolean add(E e)
boolean addAll(Collection<? extends E> c) - 删除
boolean remove(Object o)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c) - 判断是否包含
boolean contains(Object o)
boolean containsAll(Collection<?> c) - 清空
void clear() - 获取迭代器
Iterator<E> iterator() - 判断空和获取大小
boolean isEmpty()
int size() 
示例
Collection coll1 = new ArrayList ();Collection coll2 = new ArrayList ();boolean b = true;// 1. 添加b = coll1.add( "Java1" ); // 类型提升b = coll1.add( "Java2" );b = coll1.add( "Java3" );// coll1: [Java1, Java2, Java3]b = coll2.add( "Java4" );b = coll2.addAll( coll1);// 添加coll1中所有不同的元素到coll2中,[Java4, Java1, Java2, Java3]// 2. 删除b = coll2.remove("Java2"); // coll2: [Java4, Java1, Java3]// coll1移除所有和coll2相同的元素b = coll1.removeAll( coll2); // coll1: [Java2]// coll1移除所有和coll2不同的元素b = coll1.retainAll( coll2); // coll1: null// 3. 判断是否包含b = coll1.contains( "Java2" ); // trueb = coll2.containsAll( coll1); // false// 4. 清空coll1.clear();// 5. 自动装箱(Java 5支持),相当于coll.add(Integer.valueOf(3));coll1.add(3) ;coll1.add("Java");coll1.add(3.14) ;coll1.add(true);// coll1: [3, Java, 3.14, true]
集合迭代
概述
- 迭代是取出元素的一种方式,类似于数组的遍历。
 - 由于集合元素的获取具有共性,一般都需要判断,获取每一个元素,更灵活的获取元素等功能,所以向上抽取为Iterator接口。
 - 集合的迭代需要使用迭代器,由于Collection接口继承了Iterator接口,所以Java集合框架中的单列集合均具有获取该集合迭代器的方法。
 
方法
- 判断集合中是否还有下一个元素
boolean hasNext() - 获取下一个元素
E next() - 移除该元素
default void remove() 
 一般使用for循环来使用迭代器,如果需要遍历集合,也可以使用增强的for循环。当然,使用while也是可以的。
示例
Collection c = new ArrayList ();b = c.add( "Java1" );b = c.add( "Java2" );b = c.add( "Java3" );for (Iterator it = c.iterator(); it.hasNext();) {String str = (String) it.next();System.out.print( str + " " );}System.out.println();for (Object object : c) {String str = (String) object;System.out.print( str + " " );}System.out.println();Iterator it = c .iterator();while(it.hasNext()) {String str = (String) it.next();System.out.print( str + " " );}
运行结果
 Java1 Java2 Java3 
 Java1 Java2 Java3 
 Java1 Java2 Java3 
注意
- 迭代器基本替代了Vector类中的Enumeration。
 - 迭代器如果没有使用泛型,那么获得的是Object类型,需要向下转型。
 - next方法是自动向下取元素,要避免出现NoSuchElementException。
 
更多推荐
 



所有评论(0)