Map、Set、List集合差别及联系

本文深入解析了Java中集合类的特性,包括List、Set、Map三种主要类型及其各自的实现类,如ArrayList、HashSet、HashMap等。文章对比了这些集合类的结构特点、存储方式和使用场景,为开发者提供了选择合适集合类的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map、Set、List集合差别及联系

一、数组Array和集合的区别

  1. 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
  2. JAVA集合可以存储和操作数目不固定的一组数据。
  3. 若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类 库,array不适用。
  4. 使用相应的toArray()和Arrays.asList()方法可以相互转换。

二、集合

集合类存放于java.util包中。
  集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
  集合类型主要有3种:set(集)、list(列表)和map(映射)。

三、set(集)、list(列表)和map(映射)三者关系

在这里插入图片描述在这里插入图片描述

四、List、Map、Set的区别与联系

一、结构特点

1、 ListSet是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;
2、 List中存储的数据是有顺序的,并且值允许重复;
Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;
Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)。

二、实现类

1、List接口有三个实现类:
1.1 LinkedList 基于链表实现,非线程安全,链表内存是散列的,增删快,查找慢;
1.2 ArrayList 基于数组实现,非线程安全,效率高,增删慢,查找快;
1.3 Vector 基于数组实现,线程安全,效率低,增删慢,查找慢;

2、Map接口有四个实现类:
2.1 HashMap
基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键;
2.2 HashTable
线程安全,低效,不支持 null 值和 null 键;
2.3 LinkedHashMap
是 HashMap 的一个子类,保存了记录的插入顺序;
2.4 SortMap 接口
TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序
3、Set接口有两个实现类:
3.1 HashSet
底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;
3.2 LinkedHashSet
继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap

栈是一种只能在一端进行插入或删除操作的线性表。(先进后出表)

java中的Stack继承Vector

实例化

Stack stack=new Stack();

判断是否为空

stack.empty()

取栈顶值(不出栈)

stack.peek()

进栈

stack.push(Object);

出栈

stack.pop();

源码:

public class StackTest{
    public static void main(String[] args) {
         Stack<String> stack=new Stack<>();
        //1.栈是否为空
        System.out.println(stack.empty());
        //2.进栈push()
        stack.push("a");
        stack.push("b");
        //3.栈顶值
        System.out.println(stack.peek());
        //4.出栈
        stack.pop();
        System.out.println(stack.peek());
        
    }
}

输出:
b
a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值