Java常见集合类区别

这篇具有很好参考价值的文章主要介绍了Java常见集合类区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. List和Map区别

List所包含的元素可以重复,元素按放入的先后顺序来存放;Map中的key-value对是无序的,key不允许重复。

1.1 深入阐述

可以把List当作Map来看,List相当于一个key都是int类型的Map。

程序通过元素的索引(相当于通过int类型的key)来读取List集合的元素时,可以当作Map根据key来读取value。

Map也可以当成是元素索引可以是任意类型的List集合

2. ArrayList和Vector的区别

这两个类都实现了List接口,List接口继承了Collection接口。

他们都是有序集合

存储的元素位置都是有顺序的,相当于动态的数组。

可以按照位置索引来取出某个元素。

并且其中的数据是允许重复的,这是由List集合规范制订的。

ArrayList和Vector的底层都是基于数组的。因此他们的实现代码也大致相似。

2.1 具体区别

  1. Vector是一个古老的集合,从JDK1.0开始便有了,因此它包含了大量方法名很长的方法。
  2. JDK1.2开始引入集合框架、引入List接口,还让Vector实现了List接口。因此增加了一些List接口中定义的方法。

总体来说,ArrayList可以完全代替Vector,除了在一些很古老的API中强制要求使用Vector之外。

Vector还有一个特征,它是线程安全的,因此性能比较差

ArrayList线程不安全的,因此性能较好

即使在多线程环境下使用List集合,也应该选用ArrayList而不是Vector。因为Java还提供了一个Collections工具类它可以把ArrayList包装成线程安全的集合类,例如如下代码:

List list = Collections.synchronizedList(new ArrayList());

3. ArrayList, Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式储存数据的。

数组元素的数据大于实际储存的数据以便增加和插入元素。

它们都允许直接按序号索引元素。但是插入元素需要涉及数组元素移动等内存操作。所以索引数据快,插入数据慢。

Vector由于使用了synchronized方法,因此是线程安全的,性能上较ArrayList差。

LinkedList使用双向链表来实现储存。序号索引数据需要进行前向或后向遍历。插入数据时,记录本项的前后项即可。所以插入速度较快。

LinkedList也是线程不安全的。LinkedList提供了一些方法使得其可以当作栈和队列进行使用。实际上Java提供了Collections工具类,它可以把ArrayList和LinkedList包装成线程安全的集合。

因此实际编程中应该避免使用vector。

4. HashMap和Hashtable的区别

HashMap与Hashtable的区别类似于ArrayList与Vector的区别

Hashtable与Vector都是JDKl.0就有的一个古老的集合。
Hashtable是一个继承自Dictionary的古老集合。

从JDK1.2引入了集合框架的Map接口后,Java用Hashtable也实现了Map接口。Hashtable也新增实现了一些Map接口中定义的方法。

实际上Hashtable和HashMap的底层的实现很相似。他们都是基于Hash表的实现

4.1 两者区别总结

  1. HashMap允许使用null作为key或value,而Hashtable不允许
  2. HashMap线程不安全的,因此性能较好;但Hashtable线程安全的,因此性能较差。

实际上,在多线程环境下,Java的Collections工具类将HashMap包装成线程安全的类。因此依然应该使用HashMap。

Map map = Collections.synchronizedMap(new HashMap());

编程时应该尽量避免使用Hashtable

除非在一个古老的API中强制要求使用Hashtable

参考资料:4分钟理清Java常见集合类区别,看完80%的同学都涨薪了文章来源地址https://www.toymoban.com/news/detail-425655.html

到了这里,关于Java常见集合类区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从源码分析常见集合的区别之List接口

    说到Java集合,共有两大类分别是Collection和Map。今天就详细聊聊大家耳熟能详的List吧。 List接口实现自 Collection 接口,是Java的集合框架中的一员,List接口下又有 ArrayList 、 LinkedList 和线程安全的 Vector ,今天就简单分析一下 ArrayList 和 LinkedList 的异同以及各自的优势。 ArrayLi

    2024年02月12日
    浏览(35)
  • Java遍历集合元素并修改

    结论:fori循环可以修改、删除、添加,但是要注意的是下标还是元素;增强for循环内,可以修改,不可以删除、添加。想要删除、添加,使用集合迭代器的删除、添加方法。 对List和Set的遍历,有四种方式,下面以ArrayList为例进行说明。 1.1 fori循环 使用普通for循环的遍历方式

    2024年02月06日
    浏览(39)
  • Java通过Lambda表达式根据指定字段去除重复数据(集合去重)

    这里博主给大家封装好了一个工具类,里面有两个方法。 方法一:可以根据指定字段去除重复数据。 方法二:可以获取到重复的数据。 大家在使用过程中直接拷贝下方代码在要去重的类中调用即可。 导入这个工具类后怎么使用呢?我们接着往下看。 List rstList = list.stream()

    2024年02月16日
    浏览(55)
  • 3种方法,用Java找出两个List中的重复元素

    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者: 努力的阿飞。 在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。 Java中的HashSet是一个不允许有重复元素的集合。我们可

    2024年02月08日
    浏览(51)
  • 【在Java中如何判断元素是否在集合中】

    在Java编程中,集合是非常常见的数据结构之一。在处理集合数据时,经常需要判断某个元素是否在集合中。本文将介绍在Java中如何判断元素是否在集合中,以及常用的方法和技巧。 在Java中,判断元素是否在集合中通常使用以下两种方式: 使用contains()方法 使用containsAll()方

    2024年01月17日
    浏览(56)
  • Java基础二十二(对集合元素排序比较)

    1. 使用 Comparable 接口实现默认排序 Comparable 是 Java 中的一个接口,用于定义对象之间的排序规则。 实现了 Comparable 接口的类可以比较其对象的大小(包装类都实现了该接口),从而可以在集合类(如 TreeSet、TreeMap 等)中进行排序和查找操作。这种排序被称为类的自然排序,

    2024年02月10日
    浏览(45)
  • Java中用Stream流对List对象集合转Map时key值重复的操作

    看完你还不懂,你直接喷·· 定义: 1.List是一个装Dto对象的集合 2.Dto里面有ID属性,name属性等等 3.Dto里面的ID会重复  现在要把List转成以ID为key值的map,明显key不能重复啊,所以应该怎么操作呢? (需要你有java8Stream流的基本概念,map的基本概念)   操作1:重复key,选择保留

    2024年01月18日
    浏览(59)
  • 【多线程进阶】信号量,线程安全集合类,Hashtable与ConcurrentHashMap的区别,多线程常见的面试题

    前言: 大家好,我是 良辰丫 ,今天学习多线程最后一节内容,我们主要去了解信号量,线程安全集合类,Hashtable与ConcurrentHashMap的区别,多线程常见的面试题,我们需要重点去掌握,💞💞💞 🧑个人主页:良辰针不戳 📖所属专栏:javaEE初阶 🍎励志语句:生活也许会让我们遍体鳞伤,

    2023年04月27日
    浏览(53)
  • 【JavaSE专栏51】Java集合类HashSet解析,基于哈希表无序非重元素集合

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向 :Vue、SpringBoot、微信小程序 本文讲解了 Java 中集合类 HashSet 的语法、使用说明和应用场景,并给出了样例代码。

    2024年02月16日
    浏览(66)
  • 探索Java中的Set集合:独一无二的元素之旅

     在Java编程中,我们经常需要处理一组元素,并且确保其中没有重复的元素。为了满足这一需求,Java提供了一个强大的数据结构——Set集合。Set集合是一种无序且不允许重复元素的集合,提供了高效的去重和查找功能。本文将深入探索Java中的Set集合,介绍其基本概念、常见

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包