首页 > 头条

java集合有哪些_java集合-最资讯

来源:互联网 2023-05-19 20:01:42

你们好,最近小品发现有诸多的小伙伴们对于java集合有哪些,java集合这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。


(资料图)

1、单元素,效率高,多用于查询单元素,线程安全,多用于查询单元素,多用于插入和删除成对元素,元素可以是空对,线程安全,元素不能为空。

2、是一个改进的HashMap,它实现了对键的“弱引用”。如果一个键不再被外部引用,那么这个键可以被GC回收。

3、一些集合类通过java.util.Iterator接口提供内容遍历的功能。这些接口允许您遍历对象集合。依次操作每个元素对象。当使用迭代器时,

4、获取迭代器时包含集合快照。一般不建议在遍历迭代器时修改集合省份。

5、迭代器可以用来遍历集合和列表集合,但是ListIterator只能用来遍历列表。

6、迭代器只能正向遍历集合,适合获取和移除元素。ListIerator继承了Iterator,可以双向遍历列表,也支持元素的修改。例如:添加元素、替换元素、获取上一个和下一个元素的索引等等。

7、它是集合类的上级接口,从它继承的接口主要有Set和List。

8、是集合类的帮助类,它提供了一系列静态方法来实现对各种集合的搜索、排序和线程安全等操作。

9、按特定顺序保存元素,可能会有重复的元素;

10、不能有重复元素,内部排序(无序);

11、保存键值,它可以是多值的。

12、都属于Map接口的类,实现了唯一键到特定值的映射。

13、Hashtable基于过时的Dictionary类,HashMap是Java1.2引入的Map接口的实现。

14、Hashtable是线程安全的,也就是同步的,而HashMap是线程不安全的,不是同步的。

15、HashMap类没有被分类或排序。它允许一个空键和多个空值。

16、Hashtable类似于HashMap,但是不允许空键和空值。

17、Hashtable比HashMap慢,因为它是同步的。

18、Hashtable can be synchronized by map m=collections. synchronized map (hashmap).

19、ArrayList和Vector主要来自两个方面。

20、Vector是线程安全的,也就是同步的,而ArrayList是线程不安全的,不是同步的。

21、 由于Vector支持多线程操作,所以在性能上就比不上ArrayList了。

22、 ArrayList和Vector都有一个初始的容量大小,当存储进去它们里面的元素个数超出容量的时候,就需要增加ArrayList和Vector的存储空间,

23、每次增加存储空间的时候不是只增加一个存储单元,是增加多个存储单元。

24、 Vector默认增加原来的一倍,ArrayList默认增加原来的0.5倍。

25、 Vector可以由我们自己来设置增长的大小,ArrayList没有提供相关的方法。

26、两者都实现的是List接口,不同之处在于:

27、(1)、ArrayList是基于动态数组实现的,LinkedList是基于链表的数据结构。

28、(2)、get访问List内部任意元素时,ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要按照顺序从列表的一端开始检查,直到另一端

29、(3)、对于新增和删除操作LinkedList要强于ArrayList,因为ArrayList要移动数据

30、 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。

31、这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

32、 注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:

33、List list=Collections.synchronizedList(new LinkedList(…));

34、下面列出了Array和ArrayList的不同点:

35、 Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。

36、 Array大小是固定的,ArrayList的大小是动态变化的。

37、 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator() 等等。

38、 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

39、 Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。

40、同时,Iterator允许调用者删除底层集合里面的元素,这对Enumeration来说是不可能的。

41、HashSet有以下特点:

42、A. 无序(不能保证元素的排列顺序,顺序有可能发生变化)B. 不同步C. 允许空值(集合元素可以是null,可以放入多个null,但会自动覆盖)

43、当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值来决定该对象在HashSet中存储位置。

44、简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相等注意,如果要把一个对象放入HashSet中,

45、重写该对象对应类的equals方法,也应该重写其hashCode()方法。其规则是如果两个对象通过equals方法比较返回true时,其hashCode也应该相同。另外,

46、对象中用作equals比较标准的属性,都应该用来计算hashCode的值。

47、TreeSet有以下特点:

48、A. 有序

49、 1. TreeSet是由一个树形的结构来实现的(数据结构是二叉树),它里面元 素是有序的

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

51、TreeSet中的对象元素需要实Comparable 接口

52、 TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所以也只能通过迭代器方法来获取

53、 二叉树:

54、B. 不允许空值

55、 1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过 Set用的只是Map的key

56、 2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是 多了一个有序性.

57、 3. TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所 以也只能通过迭代器方法来获取

58、 4. HashSet是基于hash算法实现的,性能优于TreeSet,通常使用 HashSet。在我们需要对其中元素排序的时候才使用TreeSet。

59、HashMap,LinkedHashMap,TreeMap都属于Map。

60、LinkedHashMap是HashMap的子类。

61、Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复

62、HashMap的内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表。使用key的hashCode做二次hash之后,再截取小于数组长度的值为索引值。key可以为null,存在索引为0的位置上。

63、由于使用了数组,所以有一个负载因子loadFactor的概念(临界阈值threshold)和resize。resize比较耗时,冲突时链式遍历查找也比较耗时,所以选定一个合适的初始容易比较重要。

64、存取性能都较高。迭代遍历时一维使用数组,二维使用链表。

65、 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直 接获取它的值,具有很快的访问速度。

66、HashMap最多只允许一条记录的 键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,

67、即任 一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如 果需要同步,

68、可以用Collections的synchronizedMap方法使HashMap 具有同步的能力。

69、LinkedHashMap是HashMap的子类。内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表,但同时内部维护了一个双向循环链表,可以保持顺序。

70、access-order=false默认为使用新增存储顺序,access-order=true则指定使用读取和访问顺序。removeEldestEntry=false(当指定为true时,

71、就是实现LRU算法的缓存容器,当然要指定淘汰时的使用频率和容量上限,其实是一个最近最少使用--最近使用access-order=true/最新存储access-order=false)。

72、存取性能较HashMap差些,但相差不大。header.after为尾方向,header.before为首方向。迭代遍历时entrySet().iterator()跟HashMap一样(有点困惑,

73、为什么不按线性顺序进行迭代,只能重写entrySet(),keySet()和values()方法)。适用于有缓存设计需求的情况(需继承)。 TreeMap的内部结构是一棵红黑树(又叫排序数,

74、是二叉树的一种),使用链式存储,可以指定比较器Comparator,key需实现Comparable接口。key不能为null。存结点性能稍差,因为需要调整树结构;取结点用的是链表遍历,

75、但是属于有序比较,性能中等。迭代遍历时用的树的中序遍历,是一个有序序列。适用于有排序需求的情况。

以上就是java集合这篇文章的一些介绍,希望对大家有所帮助。

上一篇

天天观热点:第31届中国戏剧梅花奖终评结果公示,江苏施夏明上榜!

下一篇

最后一页

为你推荐

最新热文