集合】【Java基础】java常用集合及原理

2021-01-28 20:51发布

3条回答
灰机带翅膀
2楼 · 2021-01-29 10:22

list元素可重复,set元素唯一,map存储键值对。

ArrayList

实现原理是数组,是非线程安全的,同样效果线程安全使用vector。

LinkedList

实现原理是链表,是非线程安全的,线程安全使用ConcurrentLinkedQueue。

HashSet

实现原理是哈希表,元素是无序的。

TreeSet

实现原理是二叉树,可利用实现的 Comparable接口对元素进行排序。

HashMap

实现原理是数组加链表 拉链法,是非线程安全的。

HashTable

实现原理是“拉链法”实现的散列表,Hashtable是线程安全的。

TreeMap

实现原理是红黑树,可利用实现的 Comparable接口对元素进行排序。


三岁奶猫
3楼 · 2021-01-29 13:45

  Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector和ArrayList的唯一的区别。

  ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

  LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。


来自幽府的客人
4楼 · 2021-01-29 16:29

HashSet

实现原理是哈希表,元素是无序的。

TreeSet

实现原理是二叉树,可利用实现的 Comparable接口对元素进行排序。

HashMap

实现原理是数组加链表 拉链法,是非线程安全的。

HashTable

实现原理是“拉链法”实现的散列表,Hashtable是线程安全的。

TreeMap

实现原理是红黑树,可利用实现的 Comparable接口对元素进行排序。


相关问题推荐

  • 回答 5

    Java提供的众多集合类由两大接口衍生而来:Collection(单列集合)接口和Map(双列集合)接口一 、Collection接口Collection接口定义了一个包含一批对象的集合。接口的主要方法包括:size() - 集合内的对象数量add(E)/addAll(Collection) - 向集合内添加单个/批...

  • 回答 5

    集合的话,分单列集合和双列集合,单列集合的话就是Collection接口,下面有两个子接口:Set和List。其中呢Set集合是一个不可有重复元素的无序集合;List是一个有序的集合,可以包含重复元素并且提供了按索引访问的方式。双列集合的话就是Map接口,它的实现类...

  • 回答 6

    list元素可重复,set元素唯一,map存储键值对。ArrayList实现原理是数组,是非线程安全的,同样效果线程安全使用vector。LinkedList实现原理是链表,是非线程安全的,线程安全使用ConcurrentLinkedQueue。HashSet实现原理是哈希表,元素是无序的。TreeSet实现...

  • 回答 5

    Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。集合框架的类和接口均在java.util包中。任何对象加入集合类后,自动转变为Object类型,所以在取出的...

  • 回答 11

    Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;3、Set集合:不可重复;4、Map映射:无序,键唯一,值不唯一。

  • 回答 6

    /** * 使用Lambda表达式实现过滤统计 */ public void countListItemNum(List list) {// 使用Map存储List中每个元素的数量:// key:元素   value:数量 Map result = new HashMap(); list.forEach(item->{ long count = list.stream().filter......

没有解决我的问题,去提问