------- 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、添加 :
> 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 }