zoukankan      html  css  js  c++  java
  • Java中的集合类

    集合类

    集合类是一种有用的工具类,可以存储数量不等的多个对象,并且可以动态分配大小。Java中的集合类可以分成三大类,分别是Set,List和Map。对应数学上的三个相关概念。

    set就是数学意义上的集合,元素不可重复出现,元素之间没有顺序。List是有序的集合,因为有顺序,元素可以重复。Map存储key-value对,关键在于映射关系。

    在Java中,Set,List和Map都是接口,他们还有一个共同的父接口,Collection。如果我们不使用泛型,所有Collection中的对象都会被当成是Object对象。

    遍历:可以使用Iterator来遍历Collection中的元素,1.5之后,还可以使用foreach语句类实现遍历。在遍历的过程中,不要对Collection进行删除操作,会报异常的。

    Set:

    Set的主要实现类是HashSet和TreeSet。HashSet值得关注的点是hashCode和equal方法,在重写这两个方法时,保证equal和hashCode拥有一致的行为。

    HashSet还有一个叫做LinkedHashSet的子类,LinkedHashSet遍历速度会比HashSet快一些。

    TreeSet中的元素是有序的,可以通过Comparator接口实现自己想要的排序方式。

    List:

    List就是我们经常说的线性表。线性表有两种不同的实现方式,一种通过数组来实现,一种通过链的方式来实现。List是有序的,这里的有序和TreeSet的有序是不一样的,这里的有序其实说的是索引。

    ArrayList和Vector是通过数组实现的List,其内部维护的都是一个Object类型的数组,Vector是一个非常古老的类,是线程安全的,ArrayList不是线程安全的。一般推荐使用ArrayList。

    Queue是一种数据结构,LinkedList实现了List,也实现了Dqueue接口,Dqueue是一个双端队列,所以LinkedList是线性表,同时也可以作为队列来使用,还可以作为栈来使用。

    遍历:在遍历线性表的时候根据实现的不同,选择不同的遍历方法,基于数组的实现,采用随机访问的get方法比较好,就像数组的下标,基于链的实现,采用ListIterator遍历比较好。

    Collections工具类提供了很多有用方法对List集合元素进行操作,排序之类的。还可以将指定集合包装成线程安全的。

    基于数组的实现删除、增加元素的效率肯定不会高,基于链的实现效率会比较高。

    Map:

    Map:主要的实现类有HashMap和HashTable,类似于ArrayList和Vector之间的关系。TreeMap会根据key值排序,类似于TreeSet。

  • 相关阅读:
    HU 参考错误修正:/SCWM/RCORR_HUREF
    EWM 强大的数据修复功能
    EWM ODO清理功能
    发布EWM RF ITS Mobile 相关服务
    git上传本地Intellij idea 项目到码云的git仓库中
    linux 学习一:安装jdk和tomcat
    bootstrap-datepicker应用
    vue2 枚举类型转换
    jqGrid时间转换
    (原创)Rocketmq分布式消息队列的部署与监控
  • 原文地址:https://www.cnblogs.com/moqiguzhu/p/3789213.html
Copyright © 2011-2022 走看看