For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
昆明IT培训的老师知道,Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。
可以看到Collection并没有直接实现类,而是提供更具体的子接口实现。通过查询API,可以总结出Collection的基本功能。
1、添加
boolean add(E e):添加一个元素
boolean addAll(Collection<? extends E> c):添加一个集合的元素
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo1 {
7 public static void main(String[] args) {
8 Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
9 collection1.add("红楼梦");
10 collection1.add("三国演义");
11 System.out.println(collection1);
12
13 Collection collection2 = new ArrayList();
14 collection2.add("西游记");
15 collection2.add("水浒传");
16
17 collection1.add(collection2);
18 System.out.println(collection1);
19 }
20 }
输出结果:
[红楼梦,三国演义]
[红楼梦,三国演义, [西游记,水浒传]]
2、删除
void clear():清空集合中的所有元素
boolean remove(Object o):移除指定的元素
boolean removeAll(Collection<?> c):移除一个集合的元素
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo2 {
7 public static void main(String[] args) {
8 Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
9 collection1.add("红楼梦");
10 collection1.add("三国演义");
11 collection1.add("西游记");
12 collection1.add("水浒传");
13 System.out.println("初始状态:" + collection1);
14
15 boolean b1 = collection1.remove("红楼梦");
16 System.out.println("是否移除了元素:" + b1);
17 System.out.println("移除一个元素:" + collection1);
18 System.out.println();
19
20 Collection collection2 = new ArrayList();
21 collection2.add("三国演义");
22 collection2.add("西游记");
23 collection2.add("平凡的世界");
24 boolean b2 = collection1.removeAll(collection2); //移除两个集合的交集,只要有一个元素被移除了,就返回true
25 System.out.println("移除一个集合:" + collection1);
26 System.out.println("是否移除了元素:" + b2);
27 System.out.println();
28
29 Collection collection3 = new ArrayList();
30 collection3.add("平凡的世界");
31 collection3.add("围城");
32 boolean b3 = collection1.removeAll(collection3);//移除两个集合的交集,只要有一个元素被移除了,就返回true
33 System.out.println("移除一个集合:" + collection1);
34 System.out.println("是否移除了元素:" + b3);
35 System.out.println();
36
37 collection1.clear();
38 System.out.println("清除集合中的所有元素:" + collection1);
39 }
40 }
输出结果
初始状态:[红楼梦,三国演义,西游记,水浒传]
是否移除了元素:true
移除一个元素:[三国演义,西游记,水浒传]
移除一个集合:[水浒传]
是否移除了元素:true
移除一个集合:[水浒传]
是否移除了元素:false
清除集合中的所有元素:[]
3、判断
boolean contains(Object o):判断集合是否包含指定元素
boolean containsAll(Collection<?> c):判断集合是否包含指定的集合元素
boolean isEmpty():判断集合是否为空
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo3 {
7 public static void main(String[] args) {
8 Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
9 collection1.add("红楼梦");
10 collection1.add("三国演义");
11 collection1.add("西游记");
12 collection1.add("水浒传");
13 System.out.println("是否包含红楼梦:" + collection1.contains("红楼梦"));
14
15 Collection collection2 = new ArrayList();
16 collection2.add("三国演义");
17 collection2.add("西游记");
18 collection2.add("平凡的世界");
19 System.out.println("是否包含一个集合中元素:" + collection1.containsAll(collection2)); //包含所有才包含
20
21 System.out.println("集合是否为空:" + collection1.isEmpty());
22 }
23 }
输出结果
是否包含红楼梦:true
是否包含一个集合中元素:false
集合是否为空:false
4、获取长度
int size():获取集合中元素的个数
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo4 {
7 public static void main(String[] args) {
8 Collection collection = new ArrayList(); // Collection是接口,实例化其子类
9 collection.add("红楼梦");
10 collection.add("三国演义");
11 collection.add("西游记");
12 collection.add("水浒传");
13 System.out.println("元素个数:" + collection.size());
14 }
15 }
输出结果
元素个数:4
5、交集
boolean retainAll(Collection<?> c):保留此collection中那些也包含在指定collection的元素(可选操作)。换句话说,移除此collection中未包含在指定collection中的所有元素。
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo5 {
7 public static void main(String[] args) {
8 Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
9 collection1.add("红楼梦");
10 collection1.add("三国演义");
11 collection1.add("西游记");
12 collection1.add("水浒传");
13
14 Collection collection2 = new ArrayList();
15 collection2.add("西游记");
16 collection2.add("水浒传");
17 System.out.println(collection1.retainAll(collection2));
18 System.out.println("collection1:" + collection1);
19 System.out.println("collection2:" + collection2);
20
21 Collection collection3 = new ArrayList();
22 collection3.add("西游记");
23 collection3.add("平凡的世界");
24 System.out.println(collection1.retainAll(collection3));
25 System.out.println("collection1: " + collection1);
26 System.out.println("collection3: " + collection3);
27 }
28 }
输出结果
true
collection1:[西游记,水浒传]
collection2:[西游记,水浒传]
true
collection1: [西游记]
collection3: [西游记,平凡的世界]
从上面结果分析得知,collection1集合与collection2集合做交集运算,最后的结果保留在collection1中,而collection2中的元素保持不变。
6、集合转数组
Object[] toArray():集合转数组
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 public class CollectionDemo6 {
7 public static void main(String[] args) {
8 Collection collection = new ArrayList(); // Collection是接口,实例化其子类
9 collection.add("红楼梦");
10 collection.add("三国演义");
11 collection.add("西游记");
12 collection.add("水浒传");
13
14 Object[] objects = collection.toArray();
15
16 for (Object object : objects) {
17 System.out.println(object);
18 }
19 }
20 }
输出结果
红楼梦
三国演义
西游记
水浒传
7、遍历
Iterator<E> iterator():返回在此collection的元素上进行迭代的迭代器,迭代器是集合特有的遍历方式,所以迭代器是依赖于集合存在的,其中Iterator是一个接口,其有3个方法
boolean hasNext():如果仍有元素可以迭代,则返回true。
E next():返回迭代的下一个元素,并移动到下一个位置。
void remove():从迭代器指向的collection中移除迭代器返回的最后一个元素
示例代码
1 package collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Iterator;
6
7 public class CollectionDemo7 {
8 public static void main(String[] args) {
9 Collection collection = new ArrayList(); // Collection是接口,实例化其子类
10 collection.add("红楼梦");
11 collection.add("三国演义");
12 collection.add("西游记");
13 collection.add("水浒传");
14
15 Iterator it = collection.iterator();
16
17 while (it.hasNext()) {
18 Object object = it.next();
19 System.out.println(object);
20 }
21
22 it.remove(); //如果未调用next方法,则会抛出IllegalStateException异常
23 System.out.println(collection);
24 }
25 }
输出结果
红楼梦
三国演义
西游记
水浒传
[红楼梦,三国演义,西游记]
我们可以把迭代器看成是一个指向集合的游标或者是指针,我们用黑色箭头表示迭代器,遍历集合之前的初始位置如下:
当代码执行it.hasNext()语句时,此时迭代器会判断后面是否还有元素,有的话,当代码it.next()执行时,则取出了当前迭代的元素红楼梦,同时迭代器向后移动了一个位置,
以此类推,当迭代器走到集合的最后位置时,语句it.hasNext()返回false,程序跳出循环,迭代结束。
至此,Collection接口的方法介绍完毕。