资讯专栏INFORMATION COLUMN

Java常见集合知识详解

lewinlee / 1237人阅读

摘要:集合的种类常见的集合类分如下几个种类详解接口是和接口的父接口,也是集合类除外根接口。接口集合中元素的存放特点是元素有序,同一元素可重复。总结中集合是一个非常重要的知识点,在实际运用中也是常常会使用到。

集合的种类

常见的集合类分如下几个种类:

Collection

- List
    - ArrayList
    - LinkedList
- Set
    - HashSet
    - TreeSet

Map

- HashMap
- TreeMap

Collection 详解

Collection接口是List和Set接口的父接口,也是集合类(Map除外)根接口。 里面定义了很多的集合操作方法,源码就不放了,我讲=将里面涉及到的一些方法截图出来,如图所示:

这里面的方法可以自行百度其用法。

List接口

List集合中元素的存放特点是:元素有序,同一元素可重复。List接口存在两个实现类,ArrayList和LinkedList。两者之间虽然都是用于存放有序可重复的元素,但是两者之间存在一定的区别;

1.ArrayList:底层实现是一个动态数组,查询通过数组下标查询;
2.LinkedList:底层实现是链表结构,查询的过程需要重头到位一个一个过滤对比

总结:所以我们可以得出 ArrayList 查询速度要优于LinkedList,但是LinkedList的插入速度要优于ArrayList;所以我们在使用的过程中,查询多使用 ArrayList ,查询删除多,使用 LinkedList 。

Set集合 HashSet

HashSet类直接实现了Set接口, 其底层其实是包装了一个HashMap去实现的。HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能。

HashSet的特征

不能保证元素插入的顺序,因为HashSet按HashCode存储对象(元素)决定的,对象变化则可能导致HashCode变化

HashSet是线程非安全的

HashSet元素值可以为NULL

TreeSet类的特征

底层是用TreeMap实现的,本质上是一个红黑树原理。

Map接口

java中的Map集合使用键(key)值(value)来保存数据,其中值(value)可以重复,但键(key)必须是唯一,也可以为空,但最多只能有一个key为空,它的主要实现类有HashMap、TreeMap。

HashMap HashMap的特征

保存元素时先进后出、无序性;

键值可以为null,但最多只能为一个null;

不支持线程同步,即可以有多个线程同时写HashMap,可能导致数据不一致,如果需要同步可以使用Collection的synchronizedMap方法使其同步。

TreeMap的特征

保存元素key-value不能为null;

允许key-value重复;

遍历元素时随机排列。

总结

Java中集合是一个非常重要的知识点,在实际运用中也是常常会使用到。每个不同的集合类的特征对于我们在使用选择上有着直接关系,所以熟悉他们的特征非常重要

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69751.html

相关文章

  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0
  • Java核心技术教程整理,长期更新

    以下是Java技术栈微信公众号发布的关于 Java 的技术干货,从以下几个方面汇总。 Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 Java基础篇 8张图带你轻松温习 Java 知识 Java父类强制转换子类原则 一张图搞清楚 Java 异常机制 通用唯一标识码UUID的介绍及使用 字符串...

    Anchorer 评论0 收藏0
  • 四年来Android面试大纲,作为一个Android程序员

    摘要:再附一部分架构面试视频讲解本文已被开源项目学习笔记总结移动架构视频大厂面试真题项目实战源码收录 Java反射(一)Java反射(二)Java反射(三)Java注解Java IO(一)Java IO(二)RandomAccessFileJava NIOJava异常详解Java抽象类和接口的区别Java深拷贝和浅拷...

    不知名网友 评论0 收藏0
  • Java 总结

    摘要:中的详解必修个多线程问题总结个多线程问题总结有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升开源的运行原理从虚拟机工作流程看运行原理。 自己实现集合框架 (三): 单链表的实现 自己实现集合框架 (三): 单链表的实现 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出 由于 poi 本身只是针对于 ...

    caspar 评论0 收藏0
  • 后台开发常问面试题集锦(问题搬运工,附链接)

    摘要:基础问题的的性能及原理之区别详解备忘笔记深入理解流水线抽象关键字修饰符知识点总结必看篇中的关键字解析回调机制解读抽象类与三大特征时间和时间戳的相互转换为什么要使用内部类对象锁和类锁的区别,,优缺点及比较提高篇八详解内部类单例模式和 Java基础问题 String的+的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水...

    spacewander 评论0 收藏0

发表评论

0条评论

lewinlee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<