Java:集合(1)——基本概念

/ 0评 / 0

一、Collection的基本概念

 

1、集合是存储对象最常用的一种方式。

 

2、数组虽然可以存储对象,但是长度是固定的;而集合的长度是可变的,数组中可以存数基本数据类型,集合只能存储对象。

 

3、集合只能用于存储对象,可以是不同类型的对象,长度可变。

 

4、集合类是Java中工具包中的成员,使用的时候需要导入工具包:java.util.*;

 

5、集合框架中有很多容器,每个容器对数据存存储方式都不同,这种存储方式叫做数据结构。

 

6、集合和数组一样,存放的是对象的地址,并不是对象实体。

集合框架图

二、Collection类的共性方法

 

所谓共性方法,就是整个类都适用的一些共性方法。比如说集合类最基本的增删改查方法。当然还有重要的迭代器方法。

 

1、增加元素 : 参数可以使任意对象,也就是Object类。

 boolean

add(E e)

          确保此 collection 包含指定的元素(可选操作)。

 boolean

addAll(Collection<? extends E> c)

          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。

 

[code lang="Java"]// 添加元素
ArrayList al_one = new ArrayList();
al_one.add("demo1");
al_one.add("demo2");
al_one.add("demo3");
al_one.add("demo4");
System.out.println("第一个集合:" + al_one);
[/code]

 

2、删除元素:参数仍然是任意对象。

 void

clear()

          移除此 collection 中的所有元素(可选操作)。

 boolean

remove(Object o)

          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。

 boolean

removeAll(Collection<?> c)

          移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。

 

[code lang="Java"]// 删除元素
al_one.remote("demo1");
System.out.println("删除后的集合:" + al_one);
al_one.clear("demo2");
System.out.println("删除后的集合:" + al_one);
[/code]

 

3、判断元素:参数仍然是任意对象。

boolean

contains(Object o)

          如果此列表中包含指定的元素,则返回 true。

 boolean

isEmpty()

          如果此列表中没有元素,则返回 true

 

[code lang="Java"]// 判断元素
boolean b1 = al_one.contains("demo1");
System.out.println("demo1元素是否存在:" + b1);
boolean b2 = al_one.isEmpty();
System.out.println("集合是否为空:" + b2);
[/code]

 

4、交集:取多个集合中相同的元素。如果没有则为空。

 boolean

retainAll(Collection<?> c)

          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。

boolean

removeAll(Collection<?> c)

          移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。

 

[code lang="Java"]
ArrayList al_two = new ArrayList();
al_two.add("demo1");
al_two.add("demo2");
al_two.add("demo5");
al_two.add("demo6");
System.out.println("第二个集合:" + al_two);
// 取交集
al_one.retainAll(al_two);
System.out.println("合并后的集合" + al_one);[/code]

 

三、迭代器

 

迭代器:集合取出元素的方式,这种方式定义在集合的内部,可以直接访问集合内部的元素,也就是内部类。这些内部类都符合一个规则,即Iterator。

 

Iterator<E>

iterator()

          返回在此 collection 的元素上进行迭代的迭代器。

 

1、返回的一个迭代器接口,一般是在循环中使用,循环得到数据。

 boolean

hasNext()

          如果仍有元素可以迭代,则返回 true。

E

next()

          返回迭代的下一个元素。

 void

remove()

          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

 

[code lang="Java"]
//迭代器的使用
Iterator it = al_one.iterator();
while(it.hasnext()){
System.out.println(al_one.next());
}
[/code]

 

2、也可以使用for循环,因为迭代器使用后不需要再使用,while循环导致迭代器对象一直处于内存中,for循环结束后,对象便销毁,节省内存。

[code lang="Java"]
// 迭代器 使用for循环 循环结束 迭代器对象销毁 节省内存
for (Iterator it = al_two.iterator(); it.hasNext();) {
System.out.print(" " + it.next());
}[/code]

 

3、注意,在迭代时循环中每next()一次,就要判断hasNext()一次,所以应该避免在迭代循环内部同时出现多个next()。

 

 

项目源码

https://github.com/IamXiaRui/JavaSE_Demo_Collection/blob/master/xr_java_collection/src/xr__collection_collection/CollectionTest.java

 

下一篇:

 

Java : 集合(2)——List 用法详解

发表评论

电子邮件地址不会被公开。 必填项已用*标注