了解什么是集合框架了解学习集合框架的意义掌握集合框架相关接口和常见的实现类了解下一阶段要学习的内容
1.介绍
Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组 接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。例如,一副扑克牌 ( 一组牌的集合 ) 、一个邮箱 ( 一组邮件的集合 ) 、一个通讯录 ( 一组姓名和电话的映射关系 ) 等等。
2.意义
2.1 Java 集合框架的优点及作用
使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码
2.2 笔试及面试题
腾讯 - Java 后台开发面经1. HashMap 了解不,介绍一下,如果一个对象为 key 时, hashCode 和 equals 方法的用法要注意什么?2. HashSet 和 HashMap 的区别是什么?3. HashMap 是线程安全的么?那需要线程安全需要用到什么?
阿里巴巴 -Java 后台开发面经1. ArrayList 和 LinkedList 的区别是什么?2. 有了解过 HashMap 的具体实现么?3. HashMap 和 ConcurrentHashMap 哪个效率更高?
3.接口 interfaces
3.1基本关系说明
集合层次结构中的根接口。集合表示一组对象,称为其元素。某些集合允许重复元素,而其他集合则不允许。有些是有序的,有些是无序的。JDK 不提供此接口的任何直接实现:它提供了更具体的子接口(如 Set 和 List)的实现。此接口通常用于传递集合,并在需要最大通用性的地方操作它们。
3.2 Collection 接口说明
所有通用的 Collection 实现类(通常通过其子接口之一间接实现 Collection)都应提供两个“标准”构造函数:一个 void(无参数)构造函数(用于创建一个空集合)和一个构造函数,该构造函数具有一个参数,类型为 Collection,它使用与其参数相同的元素创建新集合。实际上,后一个构造函数允许用户复制任何集合,从而生成所需实现类型的等效集合。没有办法强制执行此约定(因为接口不能包含构造函数),但 Java 平台库中的所有通用集合实现都符合要求。
3.3 Collection 常用方法说明
修饰符和类型 | 方法和说明 |
---|---|
boolean | add(E e)
确保此集合包含指定的元素(可选操作)。
|
boolean | addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(可选操作)。
|
void | clear()
从此集合中删除所有元素(可选操作)。
|
boolean | contains(Object o)
如果此集合包含指定的元素,则返回 true。
|
boolean | containsAll(Collection<?> c)
如果此集合包含指定集合中的所有元素,则返回 true。
|
boolean | equals(Object o)
将指定的对象与此集合进行比较以实现相等性。
|
int | hashCode()
返回此集合的哈希代码值。
|
boolean | isEmpty()
如果此集合不包含任何元素,则返回 true。
|
Iterator<E> | iterator()
返回此集合中元素的迭代器。
|
default Stream<E> | parallelStream()
返回与此集合可能并行的集合作为其源。 Stream
|
boolean | remove(Object o)
从此集合中删除指定元素的单个实例(如果存在)(可选操作)。
|
boolean | removeAll(Collection<?> c)
删除此集合的所有元素,这些元素也包含在指定的集合中(可选操作)。
|
default boolean | removeIf(Predicate<? super E> filter)
删除此集合中满足给定谓词的所有元素。
|
boolean | retainAll(Collection<?> c)
仅保留此集合中包含在指定集合中的元素(可选操作)。
|
int | size()
返回此集合中元素的数目。
|
default Spliterator<E> | spliterator()
在此集合中的元素上创建拆分器。
|
default Stream<E> | stream()
返回以此集合作为其源的顺序。 Stream
|
Object[] | toArray()
返回一个数组,其中包含此集合中的所有元素。
|
<T> T[] | toArray(T[] a)
返回一个数组,其中包含此集合中的所有元素;返回数组的运行时类型是指定数组的运行时类型。
|
3.4 Colllection 示例
/**
* Created with IntelliJ IDEA.
* Description:
* User: 星有野
* Date: 2022-05-05
* Time: 12:44
*/
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
Collection<String> List = new ArrayList<>();
System.out.println(List.size());
System.out.println(List.isEmpty());
List.add("我");
List.add("爱");
List.add("皮皮");
System.out.println(List.size());
System.out.println(List.isEmpty());
Object[] array = List.toArray();
System.out.println(Arrays.toString(array));
for (String s : List) {
System.out.println(s);
}
List.remove("爱");
for (String s : List) {
System.out.println(s);
}
List.clear();
System.out.println(List.size());
System.out.println(List.isEmpty());
}
}
3.5 Map 接口说明
Map (Java Platform SE 8 ) (oracle.com)
3.6 Map 常用方法说明
修饰符和类型 | 方法和说明 |
---|---|
void | clear()
从此映射中删除所有映射(可选操作)。
|
default V | compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
尝试计算指定键及其当前映射值的映射(如果没有当前映射)。 null
|
default V | computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
如果指定的键尚未与某个值关联(或映射到 ),则尝试使用给定的映射函数计算其值并将其输入到此映射中,除非 。 null null
|
default V | computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
如果指定键的值存在且不为 null,则尝试在给定键及其当前映射值的情况下计算新的映射。
|
boolean | containsKey(Object key)
如果此映射包含指定键的映射,则返回 true。
|
boolean | containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。
|
Set<Map.Entry<K,V>> | entrySet()
返回此映射中包含的映射的 Set 视图。
|
boolean | equals(Object o)
将指定的对象与此映射进行比较以获得相等性。
|
default void | forEach(BiConsumer<? super K,? super V> action)
对此映射中的每个条目执行给定的操作,直到所有条目都已处理完毕或该操作引发异常。
|
V | get(Object key)
返回指定键映射到的值,或者如果此映射不包含键的映射。 null
|
default V | getOrDefault(Object key, V defaultValue)
返回指定键映射到的值,或者如果此映射不包含键的映射。 defaultValue
|
int | hashCode()
返回此映射的哈希代码值。
|
boolean | isEmpty()
如果此映射不包含键值映射,则返回 true。
|
Set<K> | keySet()
返回此映射中包含的键的 Set 视图。
|
default V | merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
如果指定的键尚未与某个值关联或与 null 相关联,请将其与给定的非空值相关联。
|
V | put(K key, V value)
将指定的值与此映射中的指定键相关联(可选操作)。
|
void | putAll(Map<? extends K,? extends V> m)
将所有映射从指定映射复制到此映射(可选操作)。
|
default V | putIfAbsent(K key, V value)
如果指定的键尚未与某个值关联(或映射到),则将其与给定值相关联并返回 ,else 返回当前值。 null null
|
V | remove(Object key)
从此映射中删除键的映射(如果存在)(可选操作)。
|
default boolean | remove(Object key, Object value)
仅当指定键当前映射到指定值时,才删除该项的条目。
|
default V | replace(K key, V value)
仅当指定键当前映射到某个值时,才替换该项的条目。
|
default boolean | replace(K key, V oldValue, V newValue)
仅当当前映射到指定值时,才替换指定键的条目。
|
default void | replaceAll(BiFunction<? super K,? super V,? extends V> function)
将每个条目的值替换为在该条目上调用给定函数的结果,直到所有条目都已处理完毕或函数引发异常。
|
int | size()
返回此映射中键值映射的数目。
|
Collection<V> | values()
返回此映射中包含的值的“集合”视图。
|
3.7 Map 示例
public class TestDemo {
public static void main(String[] args) {
TreeMap<String,String> map2 = new TreeMap<>();
map2.put("索尼","佳能");
map2.put("女神","皮皮");
System.out.println(map2);
HashMap<String,String> map = new HashMap<>();
map.put("索尼","佳能");
map.put("女神","皮皮");
System.out.println(map);
}
public static void main4(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("索尼","佳能");
map.put("女神","皮皮");
System.out.println(map);
System.out.println("====================");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for( Map.Entry<String, String> entry : entrySet) {
System.out.println("key: "+entry.getKey()+" value:"+entry.getValue());
}
}
public static void main3(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("女神","皮皮");
map.put("索尼","佳能");
String ret = map.getOrDefault("索尼","佳能");
System.out.println(ret);
boolean flg = map.containsKey("女神2");
System.out.println(flg);
Map<String,String> map2 = new TreeMap<>();
}
public static void main2(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("hello");
collection.add("hello2");
//System.out.println(collection);
Object[] objects = collection.toArray();
System.out.println(Arrays.toString(objects));
/*collection.clear();
System.out.println("===================");
System.out.println(collection);
System.out.println(collection.isEmpty());*/
}
public static void main1(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("hello");
collection.add("hello2");
//collection.add(1);
//尖括号当中 放的类型 一定要是 类类型 不能是简单的基本类型
Collection<Integer> collection2 = new ArrayList<>();
collection2.add(1);
collection2.add(2);
collection2.add(13);
}
}
4.实现 classes
interface | 顺序表 | 链表 | 堆 | 红黑树 | 哈希表 |
Set | TreeSet | HashSet | |||
List | ArrayList | LinkedList | |||
Queue | LinkedList | priorityQueue | |||
Deque | LinkedList | ||||
Map | TreeMap | HashMap |
5.知识点框架
6.内容总结
Java 集合框架中接口、之间的关系及其含义Java 集合框架中接口和其各自对应的常见实现类之间的关系下一阶段的主要课程内容