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

1.介绍

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。

1.1类和接口总览

在这里插入图片描述

2.接口 interfaces

在这里插入图片描述

Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素 elements

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

Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义

  1. SortedMap : 一组有序的键值对

2.1Collection 常用方法说明

在这里插入图片描述

//Collection接口
public class TestDemo {
    public static void main(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<Integer> collection1 = new ArrayList<>();
        collection1.add(1);
        collection1.add(2);
        collection1.add(3);
    }
}

在这里插入图片描述

2.2Map 常用方法说明

在这里插入图片描述

//Map接口
public class TestDemo2 {
    public static void main(String[] args) {
        Map<String, String> map2 = new TreeMap<>();
        map2.put("国民女神", "高圆圆");
        map2.put("及时雨", "宋江");
        System.out.println(map2);
        System.out.println("=======================");
    }

    public static void main2(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 main1(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("国民女神", "高圆圆");
        map.put("及时雨", "宋江");
        System.out.println(map);
        //String ret = map.get("及时雨");//宋江
        //String ret2=map.get("宋江");
        //System.out.println(ret2);//null
        String ret = map.getOrDefault("及时雨", "xulin");
        System.out.println(ret);
        boolean flg = map.containsKey("国民女神");
        System.out.println(flg);
        Map<String, String> map2 = new TreeMap<>();
    }
}

在这里插入图片描述

3.实现 classes

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为你介绍一些Java集合框架的面试题及答案。 1. Java 集合框架包括哪些接口及其特点? Java集合框架包括以下接口: - Collection 接口:表示一组对象,它们可能是有序的或无序的,并且可以包含重复的元素。 - List 接口:继承自 Collection 接口,表示有序集合,并且允许重复元素。 - Set 接口:继承自 Collection 接口,表示无序集合,并且不允许重复元素。 - Map 接口:表示一组键值对,其中键是唯一的,但值可以重复。 2. ArrayList 和 LinkedList 的区别是什么? ArrayList 和 LinkedList 都实现了 List 接口,但它们的实现方式不同。ArrayList 是基于动态数组实现的,它的元素可以直接通过下标访问,因此查找元素的效率比较高。LinkedList 是基于双向链表实现的,它的元素不能直接通过下标访问,但在插入和删除元素时效率比 ArrayList 更高。 3. HashMap 和 HashTable 的区别是什么? HashMap 和 HashTable 都实现了 Map 接口,但它们的实现方式不同。HashMap 是非线程安全的,它允许存储空键和空值。HashTable 是线程安全的,但它不允许存储空键或空值。另外,HashMap 的迭代器是 fail-fast 的(在迭代器中修改了 map 的结构会抛出 ConcurrentModificationException),而 HashTable 的迭代器不是 fail-fast 的。 4. HashSet 和 TreeSet 的区别是什么? HashSet 和 TreeSet 都实现了 Set 接口,但它们的实现方式不同。HashSet 是基于 HashMap 实现的,它不保证元素的顺序,也不允许重复元素。TreeSet 是基于 TreeMap 实现的,它保证元素是有序的,并且不允许重复元素。 5. 如何选择合适的集合? 选择集合要根据具体的需求来决定。如果需要有序集合,并且需要频繁地在集合中间插入或删除元素,可以选择 LinkedList。如果需要有序集合,并且需要频繁地访问集合中的元素,可以选择 ArrayList。如果需要无序集合,并且需要快速地查找元素,可以选择 HashSet。如果需要有序集合,并且需要快速地查找元素,可以选择 TreeSet。如果需要存储键值对,并且需要根据键快速地查找值,可以选择 HashMap。如果需要存储键值对,并且需要有序地遍历键值对,可以选择 TreeMap。如果需要线程安全的集合,可以选择 HashTable 或 ConcurrentHashMap。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值