21. 聚集

计算机软件开发 2024-9-30 09:22:30 104 0 来自 中国
参考链接:
[https://blog.csdn.net/zhangqunshuai/article/details/80660974]
[(https://blog.csdn.net/zhangqunshuai/article/details/80660974)
https://blog.csdn.net/t_testview/article/details/89014863
参考册本: Offer来了(Java口试核心知识点)王磊  电子工业出版社
1、概述

1.jpg List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口
Set下有HashSet,LinkedHashSet,TreeSet
List下有ArrayList,Vector,LinkedList
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap
Collection接口下尚有个Queue接口,有PriorityQueue类
Java中聚集类是放在java.util中,是一个用来存放对象的容器。 1、只能存放对象,不能存放int等范例,存的是对应的是Integer等对象 2、存的是对象的引用,对象自己是放在堆内存中 3、可以存放差别范例的对象(由于实现的时候使用了泛型),不发起使用。
注意:
Queue接口与List、Set同一级别,都是继承了Collection接口。
看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不外呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数范比方果是Queue时,就完全只能访问Queue接口所界说的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有适当的方法才可以使用。
SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素肯定是有序的。
2、Connection接口(全部聚集类的根接口)

2.1 List聚集

特点: 有序,可重复

  • ArrayList 优点: 底层数据结构是数组查询快;界说时不须要界说数组巨细,如果数组巨细不够,会创建一个新的更大的数组将原来的元素复制已往。 缺点: 线程不安全增删慢。(元素必须连续存储,因此如果在中央位置添加或删除元素,须要其反面全部元素举行移动,不得当随机插入和删除,更得当随机查找和遍历操纵)
  • Vector 优点: 底层数据结构是数组查询快线程安全,支持线程同步(即同一时候只允许一个线程对Vector举行写操纵,以保证多线程下数据的划一性) 缺点: 增删慢;读写服从比ArrayList低(由于须要频仍的对Vector对象举行加锁和开释锁操纵)
  • LinkedList 优点: 底层数据结构是双向链表增删快(链表操纵,增删只须要移动对应指针)。 缺点: 线程不安全,服从高,查询慢(须要重新至尾遍历)
2.2 Queue队列


  • ArrayBlockingQueue:基于数组数据结构实现的有界壅闭队列。
  • LinkedBlockingQueue:基于链表数据结构的有界壅闭队列。
  • PriorityBlockingQueue:支持优先级排序的无界壅闭队列。
  • DelayQueue:支持延迟操纵的无界壅闭队列。
  • SynchronousQueue:用于线程同步的壅闭队列。
  • LinkedTransferQueue:基于链表数据结构实现的无界壅闭队列。
  • LinkedBlockingQueue:基于链表数据结构实现的双向壅闭队列。
2.3 Set 聚集

特点:不可重复,无序
(1)HashSet
特点:底层数据结构是哈希表。(无序,唯一)
怎样来保证元素唯一性?
依靠两个方法:hashCode()和equals()
(2)LinkedHashSet(HashTable实现数据存储,双向链表记载次序 )
特点:底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一
(3)TreeSet
特点:底层数据结构是红黑树。基于二叉树的原理对新添加的对象按照指定的次序排序(升序或降序),每添加一个对象都会举行排序,并将对象插入二叉树的指定位置。(唯一,有序)
1).怎样保证元素唯一性的呢?
根据比较的返回值是否是0来决定
2). 怎样保证元素排序的呢?
① 自然排序

  • 须要排序的类中实现 Comparable接口
  • 重写Comparable接口中的Compareto方法
代码演示:
把用户类按照名字长度排序,长度相等的按照名字的hash值,如果hash值相等则名字相等,按照年龄排序。
User类:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:44, Processed in 0.141901 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表