Java集合类概述

Java集合类概述

本文主要简要梳理常用java集合类,自己在日常编程中用的比较多,加深理解,他们所属包:java.util

  • List
  • Map
  • Set

List

首先要明确,List是接口,该接口继承了Collection接口,这个可以通过查阅java API文档。 —— [ java API ]

代码举例说明,请进入Java集合类之List性能比较

List接口三大常用实现类:ArrayList、LinkedList、Vector

结构比较:

实现类数据结构同步状态
ArrayList动态数组不同步
LinkedList链表不同步
Vector动态数组同步

相对性能比较:

实现类
ArrayList开销大开销大相对快
LinkedList开销小开销小
Vector开销大开销大

具体方法比较:

  • ArrayList

    • 基本方法:add, remove, get, set, size, contains
    • 注意要点:indexOf(返回第一个对象下标),lastIndexOf(返回最后一个对象小标);如需要同步,需要自行添加同步处理。
    • 优势所在:遍历和随机查找速度快。
  • LinkedList

    • 基本方法:add, remove, get, set, size, contains
    • 注意要点:高效操作对象方法addFirst,addLast,getFirst,getLast;如需要同步,需要自行添加同步处理。
    • 优势所在:新增删除速度快。
  • Vector

    • 基本方法:add, remove, get, set, size, contains
    • 注意要点:提供同步功能。

Map

首先要明确,Map是接口,用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。这个可以通过查阅java API文档。 —— [ java API ]

代码举例说明,请进入Java集合类之Map

Map接口两大常用实现类:HashMap、TreeMap

结构比较:

实现类数据结构优势
HashMap散列表插删快
TreeMap红黑树内部排序

补充说明:

  • HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap是最好的选择。

  • TreeMap取出来的是排序后的键值对。插入、删除需要维护平衡会牺牲一些效率。但如果要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。

Set

首先要明确,Set是接口,该接口继承了Collection接口。相对于上面两种类型集合类,Set不保存重复元素。这个可以通过查阅java API文档。 —— [ java API ]

代码举例说明,请进入Java集合类之Set

Set接口两大常用实现类:HashSet、TreeSet、LinkedHashSet


补充说明:

  • HashSet使用的是复杂的哈希码来管理元素,使用HashSet能够最快的获取集合中的元素,效率非常高(以空间换时间)。会根据hashcode和equals来判断是否是同一个对象,如果hashcode一样,并且equals返回true,则是同一个对象,不能重复存放。

  • TreeSet也不能存放重复对象,但是TreeSet会自动排序,如果存放的对象不能排序则会报错,所以存放的对象必须指定排序规则。排序规则包括自然排序和客户排序。

    • 自然排序:TreeSet要添加哪个对象就在哪个对象类上面实现java.lang.Comparable接口,并且重写comparaTo()方法,返回0则表示是同一个对象,否则为不同对象。
    • 客户排序:建立一个第三方类并实现java.util.Comparator接口。并重写方法。定义集合形式为TreeSet ts = new TreeSet(new 第三方类())。
        
  • LinkedHashSet按照插入顺序保存对象,同时还保存了HashSet的查询速度。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值