Java-集合
Java 集合
大多数真实应用程序都会处理像文件、变量、来自文件的记录或数据库结果集这样的集合。
最常见的集合就是数组,我们之前已经单独讨论过它,现在我们主要研究其他的集合类型。
列表 List
List 是一种有序集合,也称为序列。
List 集合只能包含对象(不能包含像 int 这样的原语类型)。
要使用 List,我们需要先把它 import 到程序中:
1 | import java.util.List; |
List 是一个接口,所以不能直接实例化它(即,不可以 new List<E> !),要声明一个 List ,使用如下语法:
1 | List<String> listOfStrings = new ArrayList<String>(); |
或
1 | List<String> listOfStrings = new ArrayList<>(); |
这样,我们声明了一个种比较常用的 List —— ArrayList。
【注】
- 要使用上面的代码,首先要 :
1
2 import java.util.List;
import java.util.ArrayList;- 我们将
ArrayList对象赋给了一个List类型的变量。在 Java 编程中,可以将某种类型的变量赋给另一种类型,只要被赋值的变量是赋值变量所实现的超类或接口。
正式类型
前面的代码段中尖括号( <>) 中的类型被称为正式类型(formal type),即这个 List 是一个包含何种类型的集合。
如前例中正式类型为 String,这个List 仅能包含 String 实例。
如果把正式类型写为<Object>,就意味着可将任何实体放在该 List 中。
使用列表
- 将实体放入
List中add(E element)方法将元素 element 添加到List的末尾处。add(int index, E e方法将元素 element 添加到List的索引为index处(index <= List.size())。
- 询问
List目前有多大- 要询问
List有多大,可调用size()
- 要询问
- 从
List中获取实体- 要从
List中检索某一项,可调用get()并向它传递想要的项的索引
- 要从
- 从
List中删除实体- 要从
List中删除某一项,可调用remove()并向它传递想要的项的索引
- 要从
1 | Logger l = Logger.getLogger("Test") |
相关代码: UsrList.java
关于 List 的更多说明,详见 JDK文档。
迭代变量 Iterable
如果一个集合实现了 java.lang.Iterable,那么该集合被称为迭代变量集合。
Iterable 可从一端开始,逐项地处理集合,直到处理完所有项。
它的使用形式就是在 循环 中提及过的 for-echo 循环:
1 | for (objectType varName : collectionReference) { |
因为 List 扩展了 java.util.Collection(它实现 Iterable),所以可以使用简写语法来迭代任何 List :
1 | List<Integer> listOfIntegers = obtainSomehow(); |
这段代码实现的效果和如下的 for 循环处理等效:
1 | List<Integer> listOfIntegers = obtainSomehow(); |
集 Set
Set 是一种没有重复元素的集合结构。它可保证其元素中的唯一性,但不关心元素的顺序。
List 可包含同一个对象数百次,而 Set 仅可包含某个特定实例一次。
Set 也仅可包含对象,不能直接包含内置类型。
与 List 一样,不能直接实例化 Set (不能 new Set<E>()) ,但可以用继承自 Set 的 HashSet 等来实现。
操作 Set
- 增
add(E e)
- 删
remove(Object o)
- 获取大小
size()
- 获取实体
- 使用在 “迭代变量 (
Iterable)” 中介绍的 for-each 循环可以把元素从Set中取出来。但注意对象可能按照不同于添加它们的顺序打印被取出来。
- 使用在 “迭代变量 (
1 | import java.util.Set; |
输出结果:
1 | ... TrySet main |
映射 Map
Map 是一种方便的集合构造,可以使用它将一个对象(键)与另一个对象(值)相关联。
Map 的键必须是唯一的,而且可在以后用于检索值。
和 List、Set 一样,Map 集合仅可包含对象,且 Map 是一个接口,所以不能直接实例化它,我们常用 HashMap 来实现一个 Map。
常用操作
- 添加元素:
put(K key, V value) - 取出元素:
get(Object key) - 删除元素:
remove (Object key, [Object value]) - 获取大小:
size() - 获取一个 Key 的
Set:keySet(),可以利用这个方法,结合使用 Set 和 Map,实现遍历Map。
1 | // 声明 |
1 | Set<String> keys = mapOfIntegers.keySet(); |
相关代码:TryMap.java
相关代码: