Cellection

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo1 {
   public static void main(String[] args) {
     Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
     collection1.add( "红楼梦" );
     collection1.add( "三国演义" );
     System.out.println(collection1);
 
     Collection collection2 = new ArrayList();
     collection2.add( "西游记" );
     collection2.add( "水浒传" );
 
     collection1.add(collection2);
     System.out.println(collection1);
   }
}

输出结果:

[红楼梦, 三国演义]
[红楼梦, 三国演义, [西游记, 水浒传]]

2、删除
void clear():清空集合中的所有元素

boolean remove(Object o):移除指定的元素

boolean removeAll(Collection<?> c):移除一个集合的元素

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo2 {
   public static void main(String[] args) {
     Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
     collection1.add( "红楼梦" );
     collection1.add( "三国演义" );
     collection1.add( "西游记" );
     collection1.add( "水浒传" );
     System.out.println( "初始状态:" + collection1);
 
     boolean b1 = collection1.remove( "红楼梦" );
     System.out.println( "是否移除了元素:" + b1);
     System.out.println( "移除一个元素:" + collection1);
     System.out.println();
 
     Collection collection2 = new ArrayList();
     collection2.add( "三国演义" );
     collection2.add( "西游记" );
     collection2.add( "平凡的世界" );
     boolean b2 = collection1.removeAll(collection2); // 移除两个集合的交集,只要有一个元素被移除了,就返回true
     System.out.println( "移除一个集合:" + collection1);
     System.out.println( "是否移除了元素:" + b2);
     System.out.println();
 
     Collection collection3 = new ArrayList();
     collection3.add( "平凡的世界" );
     collection3.add( "围城" );
     boolean b3 = collection1.removeAll(collection3); // 移除两个集合的交集,只要有一个元素被移除了,就返回true
     System.out.println( "移除一个集合:" + collection1);
     System.out.println( "是否移除了元素:" + b3);
     System.out.println();
 
     collection1.clear();
     System.out.println( "清除集合中的所有元素:" + collection1);
   }
}

输出结果

初始状态:[红楼梦, 三国演义, 西游记, 水浒传]
是否移除了元素:true
移除一个元素:[三国演义, 西游记, 水浒传]

移除一个集合:[水浒传]
是否移除了元素:true

移除一个集合:[水浒传]
是否移除了元素:false

清除集合中的所有元素:[]

3、判断

boolean contains(Object o):判断集合是否包含指定元素

boolean containsAll(Collection<?> c):判断集合是否包含指定的集合元素

boolean isEmpty():判断集合是否为空

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo3 {
   public static void main(String[] args) {
     Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
     collection1.add( "红楼梦" );
     collection1.add( "三国演义" );
     collection1.add( "西游记" );
     collection1.add( "水浒传" );
     System.out.println( "是否包含红楼梦:" + collection1.contains( "红楼梦" ));
 
     Collection collection2 = new ArrayList();
     collection2.add( "三国演义" );
     collection2.add( "西游记" );
     collection2.add( "平凡的世界" );
     System.out.println( "是否包含一个集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含
 
     System.out.println( "集合是否为空:" + collection1.isEmpty());
   }
}

输出结果

是否包含红楼梦:true
是否包含一个集合中元素:false
集合是否为空:false

4、获取长度

int size():获取集合中元素的个数

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo4 {
   public static void main(String[] args) {
     Collection collection = new ArrayList(); // Collection是接口,实例化其子类
     collection.add( "红楼梦" );
     collection.add( "三国演义" );
     collection.add( "西游记" );
     collection.add( "水浒传" );
     System.out.println( "元素个数:" + collection.size());
   }
}

输出结果

元素个数:4

5、交集

boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo5 {
   public static void main(String[] args) {
     Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
     collection1.add( "红楼梦" );
     collection1.add( "三国演义" );
     collection1.add( "西游记" );
     collection1.add( "水浒传" );
 
     Collection collection2 = new ArrayList();
     collection2.add( "西游记" );
     collection2.add( "水浒传" );
     System.out.println(collection1.retainAll(collection2));
     System.out.println( "collection1:" + collection1);
     System.out.println( "collection2:" + collection2);
 
     Collection collection3 = new ArrayList();
     collection3.add( "西游记" );
     collection3.add( "平凡的世界" );
     System.out.println(collection1.retainAll(collection3));
     System.out.println( "collection1: " + collection1);
     System.out.println( "collection2: " + collection2);
   }
}

输出结果

true
collection1:[西游记, 水浒传]
collection2:[西游记, 水浒传]
true
collection1: [西游记]
collection2: [西游记, 水浒传]

从上面结果分析得知,collection1集合与collection2集合做交集运算,最后的结果保留在collection1中,而collection2中的元素保持不变。

6、集合转数组

Object[] toArray():集合转数组

示例代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
 
public class CollectionDemo6 {
   public static void main(String[] args) {
     Collection collection = new ArrayList(); // Collection是接口,实例化其子类
     collection.add( "红楼梦" );
     collection.add( "三国演义" );
     collection.add( "西游记" );
     collection.add( "水浒传" );
 
     Object[] objects = collection.toArray();
 
     for (Object object : objects) {
       System.out.println(object);
     }
   }
}

输出结果:

红楼梦
三国演义
西游记
水浒传

7、遍历

Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器,迭代器是集合特有的遍历方式

其中Iterator是一个接口,其有3个方法

boolean hasNext():如果仍有元素可以迭代,则返回 true。

E next():返回迭代的下一个元素,并移动到下一个位置。

void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素

示例代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package collection;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
public class CollectionDemo7 {
   public static void main(String[] args) {
     Collection collection = new ArrayList(); // Collection是接口,实例化其子类
     collection.add( "红楼梦" );
     collection.add( "三国演义" );
     collection.add( "西游记" );
     collection.add( "水浒传" );
 
     Iterator it = collection.iterator();
 
     while (it.hasNext()) {
       Object object = it.next();
       System.out.println(object);
     }
 
     it.remove(); // 如果未调用next方法,则会抛出IllegalStateException异常
     System.out.println(collection);
   }
}

输出结果:

红楼梦
三国演义
西游记
水浒传
[红楼梦, 三国演义, 西游记]

 

转载于:https://www.cnblogs.com/zhoanghua/p/9289547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值