美文网首页30岁程序员的未来心路
Java基础-常用的集合类有哪些?

Java基础-常用的集合类有哪些?

作者: 夜暗殇 | 来源:发表于2021-08-25 16:07 被阅读0次

Java中常用到的集合包括三大类Set、List、Map。首先讲一下自己对于这三大类集合的理解:

Set主要用到的是HashSet和TreeSet两类。HashSet就目前我在工作中常用到的就是它的去重功能(实际工作中业务逻辑需要对集合数据进行去重的时候)。这里就引出HashSet的基本特点了:

HashSet 无序、不允许有重复数据(基于equals方法的返回值实现去重)。另外,还有一个名叫LinkedHashSet的实现类,除了使用HashCode来决定元素位置之外,同时还是用了链表来维护元素的次序(Linked),因此对其插入元素时,看起来是有序的。

TreeSet工作中没有接触,来一段网络知识:

TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。

向TreeSet中加入的应该是同一个类的对象。TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较大小返回0。

自然排序

自然排序使用要排序元素的CompareTo(Object obj)方法来比较元素之间大小关系,然后将元素按照升序排列。Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。obj1.compareTo(obj2)方法如果返回0,则说明被比较的两个对象相等,如果返回一个正数,则表明obj1大于obj2,如果是 负数,则表明obj1小于obj2。如果我们将两个对象的equals方法总是返回true,则这两个对象的compareTo方法返回应该返回0。

定制排序

自然排序是根据集合元素的大小,以升序排列,如果要定制排序,应该使用Comparator接口,实现 int compare(T o1,T o2)方法。

从上面的引文可以看出,对于集合的排序可以使用元素本身比较大小的方法(前提是实现了Comparable接口的对象);或者去实现Comparator接口的compare()方法来自定义一套比较大小的逻辑。

List分为ArrayList和LinkedList,List是有序集合,允许有重复数据的存在。前者是基于数组的原理存储数据,后者是基于链表的原理存储数据。

List是有顺序的,因此List肯定是可以排序的。考虑到这一点,Java创造者们早就给我们准备好了趁手的工具——Collections,长得有点像Set和List的お父さん(父亲),其实根本不是一个世界的人(类);

关于Collections

这是官方提供的一个处理集合的工具方法的集合,下面来仔细看看这个便利的方法:

sort()方法排序的本质其实也是借助Comparable接口和Comparator接口的实现,一般有2种用法:

1、直接将需要排序的list作为参数传入,此时list中的对象必须实现了Comparable接口,然后sort会按升序的形式对元素进行排序;

2、传入list作为第一个参数,同时追加一个Comparator的实现类作为第二个参数,然后sort方法会根据Comparator接口的实现类的逻辑,按升序进行排序;

Map分为HashMap和LinkedHashMap。Map的存储形式是以键值(Entry)对的方式存在的,存储原理是根据key的hashcode值来进行散列分布的。具体的实现原理会在“HashMap的实现原理”的文章里进行详解,这里不再赘述。

本文根据http://www.jianshu.com/p/820fd1b89c6a归纳整理完成

相关文章

  • Java程序猿想超神?先回答这些问题。

    一、Java基础 实例方法和静态方法有什么不一样? Java中的异常有哪几类?分别怎么使用? 常用的集合类有哪些?...

  • Java程序猿想超神?先回答这些问题。

    一、Java基础 实例方法和静态方法有什么不一样? Java中的异常有哪几类?分别怎么使用? 常用的集合类有哪些?...

  • Java基础-常用的集合类有哪些?

    Java中常用到的集合包括三大类Set、List、Map。首先讲一下自己对于这三大类集合的理解: Set主要用到的...

  • Java基础之集合类

    Java基础之集合类 集合类简单介绍 Java集合是Java提供的工具包,包含了常用的数据结构:集合、链表、队列、...

  • Java中常用的包有哪些

    Java中常用的包有哪些 常用包介绍: java.lang:该包提供了Java编程的基础类,例如 Object、M...

  • Java面试

    一、Java基础: 1、常用的Java类?2、常用的集合,说出五个?3、IO中常用的类,说出五个?4、map是怎么...

  • java文艺复兴

    JAVA 语言基础 理解面向对象OO 常用类 集合 IO 多线程 GUI(??) 网络编程 JAVA WEB (...

  • Java面试基础题(二)

    JDK 中常用的包有哪些? java.lang:这个是系统的基础类; java.io:这里面是所有输入输出有关的类...

  • JAVA基础问题

    接口与抽象类的区别? Java中的异常有哪几类?分别怎么使用? 常用的集合类有哪些?比如List如何排序? Arr...

  • java基础大纲

    1.接口抽象类区别2.java异常有哪几类,怎么使用3.常用的集合类有哪些?比如List如何排序4.ArrayLi...

网友评论

    本文标题:Java基础-常用的集合类有哪些?

    本文链接:https://www.haomeiwen.com/subject/wpedwxtx.html