------- android培训、java培训、期待与您交流! ----------
Java 的集合类可以用于存储数量不等的多个对象,并可以实现常用的数据结构。
为什么出现集合类?
因为面向对象语言对事务的提现都是以对象的形式,所以为了方便多个对象的操作,就对对象进行存储,集合就是存储对象最常用的方式。
数组和集合类 有什么不同的?
数组虽然也可以存储对象,但长度是固定的,集合长度是可变的;数组中可以存储基本数据类型,而且数组只能存储同一对象,集合只能存储对象,且可以存储多种不同的对象。
集合类的特点:只用于存储对象,长度可变,存储不同的类型对象。
一. Collection 接口中的共性方法
Collection 是Java 集合框架中的跟接口,其子接口有:Set、Queue、List。
Collection 中包定义了共性方法分类为:添加、删除、判断等。
1 public class CollectionText { 2 public static void main(String[] args) 3 { 4 // 创建一个集合容器,使用Collection 接口的子类: ArrayList 5 Collection e = new ArrayList() ; 6 System.out.println("集合是不是为空:"+e.isEmpty()); 7 CollectionAddMethod(e) ; 8 System.out.println("集合是不是为空:"+e.isEmpty()); 9 System.out.println("----我是分割线-----");10 CollectionRemoveMethod(e) ; 11 System.out.println("----我是分割线-----");12 CollectionRetainAllMethod(e) ;13 System.out.println("----我是分割线-----");14 CollectionContainsMethod(e);15 }16 public static void CollectionAddMethod(Collection e)17 {18 // 添加元素;19 e.add("我是添加1") ;20 e.add("我是添加2") ;21 e.add("我是添加3") ;22 e.add("我是添加4") ;23 System.out.println("添加元素之后:");24 System.out.println(e);25 }26 public static void CollectionRemoveMethod(Collection e)27 {28 // 删除元素:29 e.remove("我是添加3") ;30 System.out.println("删除元素之后:");31 System.out.println(e);32 }33 public static void CollectionRetainAllMethod(Collection e)34 {35 Collection e1 = new ArrayList() ; 36 e1.add("我是添加4") ; 37 System.out.println("retainAll 之前的e : "+e);38 // 取交集,e 中只会保留 e1 中相同的元素。39 e.retainAll(e1) ; 40 System.out.println("retainAll 之后的e : " + e); 41 }42 public static void CollectionContainsMethod(Collection e)43 {44 System.out.println("e有没有 <我是添加4> :"+e.contains("我是添加4") ) ;45 System.out.println("e有没有 <我是添加1> :"+e.contains("我是添加1"));46 }47 } 我是添加1> 我是添加4>
1、添加 :
> boolean add(Object o) add方法的参数类型是Object ,以便接收任意类型的对象。
注意:集合中存储的都是对象的引用(地址) ;
> boolean addAll(Collection<? extends e> c)
2、删除:
> boolean remove(Object o) : 删除指定的对象。
> boolean remove(Conllection<?> c)
> void clear() 移除此 collection 中的所有元素。
3、判断:
、 > boolean isEmpty() 。 如果此 collection 不包含元素,则返回true ;
> boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。
> boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
4、取交集:
> boolean retainAll(Collection<?> c) 保留 次 collection 和 c 共同拥有的元素。
二.遍历集合元素:
2.1 使用 Iterator 接口遍历集合元素:
Iterator 主要用于遍历Collection 集合中的元素,Iterator 对象也被称为迭代器。Iterator 接口里面定义了如下三个方法:
> boolean hasNext() : 如果被迭代的集合元素还没有被遍历,这返回true 。
> Object next() : 返回集合元素里下一个元素。
> void remove() : 删除集合里上一次next 方法返回的元素。
1 public class IteratorText { 2 public static void main(String[] args) 3 { 4 // 创建集合类,使用Collection 子接口的实现类:ArrayList ; 5 Collection books = new ArrayList() ; 6 // 添加元素、 7 books.add("神雕侠侣") ; 8 books.add("笑傲江湖") ; 9 books.add("天涯明月刀") ;10 books.add("诛仙") ;11 // 取得books对应的迭代器:12 Iterator it = books.iterator() ; 13 while(it.hasNext())14 {15 // it.next() 方法返回的数据类型是Object 类型。进行强制转换16 String book = (String) it.next() ; 17 System.out.println(book);18 if(book.equals("天涯明月刀")) 19 it.remove() ; 20 } 21 System.out.println(books );22 }23 }
注意:当使用Iterator 来访问 Collection 集合元素时,Collection 集合里面的元素不能被改变(不可通过集合对象的方法操作集合中的元素,会发生异常)。只能通过Iterator 的方法操作元素。
把取出方式定义在集合的内部,这样取出方式可以直接访问集合内容的元素。去除方式就被定义成内部类。每个容器的数据结构不同,所以取出的动作细节也不一样,但是都有共性内容:判断和取出
2.2 使用foreach 循环遍历集合元素
JDK 1.5 提供的 foreach 循环来代替访问集合元素更加便捷:
1 public class IteratorText { 2 public static void main(String[] args) 3 { 4 // 创建集合类,使用Collection 子接口的实现类:ArrayList ; 5 Collection books = new ArrayList() ; 6 // 添加元素、 7 books.add("神雕侠侣") ; 8 books.add("笑傲江湖") ; 9 books.add("天涯明月刀") ;10 books.add("诛仙") ;11 // 使用foreach 遍历12 for(Object obj : books)13 {14 String book = (String )obj ; 15 System.out.println(book);16 }17 System.out.println(books);18 }19 }