Map、Set、List集合差别及联系
发布日期:2022-02-05 04:27:52 浏览次数:2 分类:技术文章

本文共 1710 字,大约阅读时间需要 5 分钟。

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
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

转载地址:https://blog.csdn.net/weixin_43287508/article/details/86701981 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:个人开源社区
下一篇:java中 == 和equals的区别

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月20日 09时47分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章