Java集合–Collection
概念:集合是对象的容器,实现了对象常用的操作方法,可实现数组的功能。
和数组区别:
(1)数组长度固定,集合长度固定
(2)数组可以存储基本类型和引用类型,集合只能存储引用类型
位置: java.util.*
Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。
Java集合接口的作用
接口名称 | 作 用 |
---|---|
Iterator 接口 | 集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类实现 Collection 时就必须实现 Iterator 接口。 |
Collection 接口 | 是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。 |
Queue 接口 | Queue 是 Java 提供的队列实现,有点类似于 List。 |
Dueue 接口 | 是 Queue 的一个子接口,为双向队列。 |
List 接口 | 有序集合,有下标,元素可重复。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。 |
Set 接口 | 无序,无下标,元素不能重复。 |
Map 接口 | 是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。 |
对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。下面 介绍了集合中这些常用的实现类。
Java集合实现类的作用
类名称 | 作用 |
---|---|
HashSet | 为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,实现比较简单 |
TreeSet | 实现了 Set 接口,是一个有序的 Set,这样就能从 Set 里面提取一个有序序列 |
ArrayList | 一个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变大小的数组 |
ArrayDueue | 是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素 |
LinkedList | 对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和 removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用 |
HashMap | 按哈希算法来存取键对象 |
TreeMap | 可以对键对象进行排序 |
collection父接口
特点:代表一组任意类型的对象,无序、无下标、不能重复
方法名 | 作用 |
---|---|
int size() | 返回此集合中的元素数。 |
boolean isEmpty() | 如果此集合不包含元素,则返回 true 。 |
boolean contains(Object o) | 如果此集合包含指定的元素,则返回true |
Object[] toArray() | 返回一个包含此集合中所有元素的数组。 |
boolean add(Object o) | 添加对象 |
boolean remove(Object o) | 从该集合中删除指定元素的单个实例 |
boolean addAll(Collection c) | 将指定集合中的所有元素添加到此集合 |
boolean removeAll(Collection c) | 删除指定集合中包含的所有此集合的元素 |
void clear() | 从此集合中删除所有元素 |
boolean equals(Object o) | 将指定的对象与此集合进行比较以获得相等性。 |
collection代码实例
public class dome1 {
public static void main(String[] args) {
// 通过实现类新建collection
Collection collection=new ArrayList();
// 添加
collection.add("apple");
collection.add("banana");
collection.add("chicken");
System.out.println(collection.size());
System.out.println(collection);
// 删除
collection.remove("apple");
System.out.println(collection.size());
System.out.println(collection);
System.out.println("--------------------");
// 遍历 1,foreach 2.it
for(Object o:collection){
System.out.println(o);
}
System.out.println("--------------------");
// 2 迭代器 iterator里面有三种方法
// hasNext 判断是否存在下一个元素
// next 移动到下一个元素
// remove 删除元素
Iterator it=collection.iterator();
while (it.hasNext()){
System.out.println(it.next());
// collection.remove 报错 线程并发问题
// it.remove不会报错
}
// 判断包含 空
System.out.println(collection.contains("ap"));
System.out.println(collection.isEmpty());
}
}