Java数据结构(一)集合框架及背后的数据结构

目录

1.介绍

2.意义

2.1 Java 集合框架的优点及作用

2.2 笔试及面试题

3.接口 interfaces

3.1基本关系说明

3.2 Collection 接口说明

3.3 Collection 常用方法说明

3.4 Colllection 示例

3.5 Map 接口说明

3.6 Map 常用方法说明

3.7 Map 示例

4.实现 classes

5.知识点框架

6.内容总结


本节目标

        
        了解什么是集合框架
        了解学习集合框架的意义
        掌握集合框架相关接口和常见的实现类
        了解下一阶段要学习的内容

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

Java数据结构(一)集合框架及背后的数据结构_第1张图片

1. Set : 元素不能重复,背后隐含着 查找 / 搜索 的语义
1. SortedSet : 一组有序的不能重复的元素
2. List : 线性结构
3. Queue : 队列
4. Deque : 双端队列

2. Map : 键值对 Key - Value - Pair ,背后隐含着 查找 / 搜索 的语义
1. SortedMap : 一组有序的键值对

3.1基本关系说明

集合层次结构中的根接口。集合表示一组对象,称为其元素。某些集合允许重复元素,而其他集合则不允许。有些是有序的,有些是无序的。JDK 不提供此接口的任何直接实现:它提供了更具体的子接口(如 Set 和 List)的实现。此接口通常用于传递集合,并在需要最大通用性的地方操作它们。

3.2 Collection 接口说明

所有通用的 Collection 实现类(通常通过其子接口之一间接实现 Collection)都应提供两个“标准”构造函数:一个 void(无参数)构造函数(用于创建一个空集合)和一个构造函数,该构造函数具有一个参数,类型为 Collection,它使用与其参数相同的元素创建新集合。实际上,后一个构造函数允许用户复制任何集合,从而生成所需实现类型的等效集合。没有办法强制执行此约定(因为接口不能包含构造函数),但 Java 平台库中的所有通用集合实现都符合要求。

3.3 Collection 常用方法说明

修饰符和类型 方法和说明
boolean add(E e)
确保此集合包含指定的元素(可选操作)。
boolean addAll(Collection c)
将指定集合中的所有元素添加到此集合(可选操作)。
void clear()
从此集合中删除所有元素(可选操作)。
boolean contains(Object o)
如果此集合包含指定的元素,则返回 true。
boolean containsAll(Collection c)
如果此集合包含指定集合中的所有元素,则返回 true。
boolean equals(Object o)
将指定的对象与此集合进行比较以实现相等性。
int hashCode()
返回此集合的哈希代码值。
boolean isEmpty()
如果此集合不包含任何元素,则返回 true。
Iterator iterator()
返回此集合中元素的迭代器。
default Stream parallelStream()
返回与此集合可能并行的集合作为其源。Stream
boolean remove(Object o)
从此集合中删除指定元素的单个实例(如果存在)(可选操作)。
boolean removeAll(Collection c)
删除此集合的所有元素,这些元素也包含在指定的集合中(可选操作)。
default boolean removeIf(Predicate filter)
删除此集合中满足给定谓词的所有元素。
boolean retainAll(Collection c)
仅保留此集合中包含在指定集合中的元素(可选操作)。
int size()
返回此集合中元素的数目。
default Spliterator spliterator()
在此集合中的元素上创建拆分器。
default Stream stream()
返回以此集合作为其源的顺序。Stream
Object[] toArray()
返回一个数组,其中包含此集合中的所有元素。
 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 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());

    }



}



 Java数据结构(一)集合框架及背后的数据结构_第2张图片

3.5 Map 接口说明

Map (Java Platform SE 8 ) (oracle.com)

3.6 Map 常用方法说明

修饰符和类型 方法和说明
void clear()
从此映射中删除所有映射(可选操作)。
default V compute(K key, BiFunction remappingFunction)
尝试计算指定键及其当前映射值的映射(如果没有当前映射)。null
default V computeIfAbsent(K key, Function mappingFunction)
如果指定的键尚未与某个值关联(或映射到 ),则尝试使用给定的映射函数计算其值并将其输入到此映射中,除非 。nullnull
default V computeIfPresent(K key, BiFunction remappingFunction)
如果指定键的值存在且不为 null,则尝试在给定键及其当前映射值的情况下计算新的映射。
boolean containsKey(Object key)
如果此映射包含指定键的映射,则返回 true。
boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。
Set> entrySet()
返回此映射中包含的映射的 Set 视图。
boolean equals(Object o)
将指定的对象与此映射进行比较以获得相等性。
default void forEach(BiConsumer action)
对此映射中的每个条目执行给定的操作,直到所有条目都已处理完毕或该操作引发异常。
V get(Object key)
返回指定键映射到的值,或者如果此映射不包含键的映射。null
default V getOrDefault(Object key, V defaultValue)
返回指定键映射到的值,或者如果此映射不包含键的映射。defaultValue
int hashCode()
返回此映射的哈希代码值。
boolean isEmpty()
如果此映射不包含键值映射,则返回 true。
Set keySet()
返回此映射中包含的键的 Set 视图。
default V merge(K key, V value, BiFunction remappingFunction)
如果指定的键尚未与某个值关联或与 null 相关联,请将其与给定的非空值相关联。
V put(K key, V value)
将指定的值与此映射中的指定键相关联(可选操作)。
void putAll(Map m)
将所有映射从指定映射复制到此映射(可选操作)。
default V putIfAbsent(K key, V value)
如果指定的键尚未与某个值关联(或映射到),则将其与给定值相关联并返回 ,else 返回当前值。nullnull
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 function)
将每个条目的值替换为在该条目上调用给定函数的结果,直到所有条目都已处理完毕或函数引发异常。
int size()
返回此映射中键值映射的数目。
Collection values()
返回此映射中包含的值的“集合”视图。

3.7 Map 示例



public class TestDemo {

    public static void main(String[] args) {
        TreeMap map2 = new TreeMap<>();
        map2.put("索尼","佳能");
        map2.put("女神","皮皮");
        System.out.println(map2);

        HashMap map = new HashMap<>();
        map.put("索尼","佳能");
        map.put("女神","皮皮");
        System.out.println(map);
    }

    public static void main4(String[] args) {
        Map map = new HashMap<>();
        map.put("索尼","佳能");
        map.put("女神","皮皮");
        System.out.println(map);
        System.out.println("====================");

        Set> entrySet = map.entrySet();
        for( Map.Entry entry : entrySet) {
            System.out.println("key: "+entry.getKey()+" value:"+entry.getValue());
        }

    }
    public static void main3(String[] args) {

        Map 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 map2 = new TreeMap<>();

    }
    public static void main2(String[] args) {
        Collection 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 collection = new ArrayList<>();
        collection.add("hello");
        collection.add("hello2");
        //collection.add(1);
        //尖括号当中 放的类型 一定要是 类类型 不能是简单的基本类型
        Collection collection2 = new ArrayList<>();
        collection2.add(1);
        collection2.add(2);
        collection2.add(13);

    }
}


Java数据结构(一)集合框架及背后的数据结构_第3张图片

4.实现 classes


interface 顺序表 链表 红黑树 哈希表
Set TreeSet HashSet
List ArrayList LinkedList
Queue LinkedList priorityQueue
Deque LinkedList
Map TreeMap HashMap

5.知识点框架


1. 集合框架的使用
1. Collection
2. List
3. ArrayList
4. LinkedList
5. Stack
6. Queue
7. PriorityQueue
8. Deque
9. Set
10. HashSet
11. TreeSet
12. Map
13. HashMap
14. TreeMap
15. Collections

6.内容总结


Java 集合框架中接口、之间的关系及其含义
Java 集合框架中接口和其各自对应的常见实现类之间的关系
下一阶段的主要课程内容

你可能感兴趣的:(数据结构,java,数据结构,开发语言)