一 List三个子类的区别和应用场景

Vector:底层是数组,查询快,增删慢

Arraylist:底层是数组,查询块,增删慢

LinkedList:底层是链表,查询慢,增删快

效率:

Vector:线程同步(安全),效率低

ArrayList:线程不同步(不安全),效率高

它用来代替Vector的。

LinkedList:线程不安全,效率高

二 Set集合的三个子类:

  • HashSet集合
  • 底层其实是包装了一个HashMap实现的
  • 底层数据结构是数组+链表 + 红黑树
  • 具有比较好的读取和查找性能, 可以有null 值
  • 通过equals和HashCode来判断两个元素是否相等
  • 非线程安全
  • LinkedHashSet集合
  • 继承HashSet,本质是LinkedHashMap实现
  • 底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。
  • 有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序
  • 非线程安全,可以有null 值
  • TreeSet集合
  • 是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理
  • 排序分两种:自然排序(存储元素实现Comparable接口)和定制排序(创建TreeSet时,传递一个自己实现的Comparator对象)
  • 正常情况下不能有null值,可以重写Comparable接口 局可以有null值了。
  •  EnumSet
  • 集合元素必须是枚举类型,否则会抛出异常
  • EnumSet集合也是有序的,其顺序就是Enum类内元素定义的顺序
  • · EnumSet存取的速度非常快,批量操作的速度也很快

随机推荐

  1. KVM之磁盘管理工具qemu-img小结

    基本语法: qemu-img command [command options] 主要参数: info : 查看镜像的信息: create: 创建镜像: check: 检查镜像: convert: 转 ...

  2. java序列化和反序列化使用总结

    一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输 ...

  3. Linq以本周和本月为条件的Sql,Liqn查询本周,Linq查询本月

    //计算本周时间 时间 > DateTime.Now.AddDays(-Convert.ToInt32(DateTime.Now.Date.DayOfWeek) //计算本月时间 时间 > ...

  4. ln -s vs mount --bind

    First ,Symlinks and bind mounts are a whole different ballgame. ln -s you create a symbolic link,whi ...

  5. linux 服务器常规巡检并生成报表(一)

    背景 最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事. 首先,第一个要解决的问题是批量服务器执行命 ...

  6. Disconnected from the target VM, address: '127.0.0.1:56577', transport: 'socket'

    Disconnected from the target VM, address: '127.0.0.1:56577', transport: 'socket' Disconnected from t ...

  7. python 实现文件夹下所有文件或文件夹重命名

    os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表. 它不包括 . 和 .. 即使它在文件夹中. 只支持在 Unix, Windows 下使用. os.path 模块主要 ...

  8. LOJ2265. 「CTSC2017」最长上升子序列

    题意:中文题意很清楚 LOJ2263 分析: 根据Dilworth定理,最小链覆盖=最长反链. 问题转化为求 $k$ 个最小不上升序列能覆盖的最大数的个数. 参考链接: 1. https://blog ...

  9. POJ-3186-Treats for the Cows(记忆化搜索)

    链接: https://vjudge.net/problem/POJ-3186 题意: FJ has purchased N (1 <= N <= 2000) yummy treats f ...

  10. C# 判断一个string型的时间格式是否正确

    在项目开发过程中,由于各种坑爹的需求,我们可能需要用户自己手动输入时间,不过这种功能一般都出现在自己家的后台里面,咳咳,言归正传.既然如此,那么这个时候我们就需要对用户手动输入的时间格式进行验证,方法 ...