初识list,set,map



java集合框架

Java集合框架是Java编程过程中非常常用的数据结构,它提供了一系列数据结构和算法,用于管理和操作一组对象,其中最常用的3种集合类型有list,set,map
list是有序的集合,它允许重复的元素。常见的实现类有ArrayLst和LinkedList等,

list

ArrayLst:使用数组实现,是基于数组实现的list,内部使用数组来存储元素,具有随机访问的特性,支持快速查找,插入和删除操作插入和删除操作时,需要对数组进行移动,因此效率较低,时间复杂度为O(n),
当需要频繁进行随时访问和添加,删除操作时,建议使用ArrayLst
LinkedList:使用链表实现,是基于链表实现的list,内部使用双向链表来存储元素,具有快速插入和删除元素的特性,但是访问元素时需要遍历链表,效率较低,时间复杂度为O(n)
当需要频繁进行插入删除操作时,建议使用linkedlist。

set

set是无序的集合,它不允许重复的元素,常见的实现类有hashset,linkedhashset,treeset等,

hashset:使用哈希表实现,具有快速查找的特性,当元素数量比较大时可能出现哈希冲突,导致效率下降,时间复杂度为O(n),
当不需要保证元素的顺序时,建议使用hashset,
linkedhashset:使用链表和哈希表实现,具有快速查找的特性,同时保证元素的插入顺序,
当需要保证元素的插入顺序时,建议使用linkedhashset
treeset:使用红黑树实现存储元素,具有快速查找的特性,同时保证元素的排序,
当需要对元素进行排序时,建议使用treeset,

map

map是键值对的集合,允许值重复不允许键重复,常见的实现有hashmap和linkedhashmap,treemap等,
hashmap:使用哈希表实现,具有快速查找的特性,当元素数量比较大时可能出现哈希冲突,导致效率下降,时间复杂度为O(n),允许null值和null键,不保证键的顺序,
linkedhashmap:使用哈希表和链表实现,
treemap:使用红黑树实现,具有快速查找的特性,同时保证键的排序,
当需要对键排序时,建议使用treemap。

list和set的区别

list set
lists是有序的集合,可以根据索引访问元素,可以使用增强for循环 set是无序的集合,不允许存储重复元素,不能根据索引访问元素,可以使用增强for循环
通常存储需要按顺序访问的元素,如日志记录,历史记录等 通常用于去重和判重操作,如过滤重复的IP地址,电话号码等
list支持添加删除修改,这些操作会影响其他元素位置 set不支持修改操作,只能添加删除
list适合存储有序可重复的元素 set适合存储无序不重复的元素
posted @ 2023-07-25 14:53  俟礼  阅读(43)  评论(0)    收藏  举报