------- 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 }