2020-12-15
程序员文章站
2024-01-29 10:34:10
...
集合
Collection接口
list接口
ArrayList,LinkedList,Vector
set接口
HashSet,LinkedHashSet,TreeSet
Map接口
HashMap,LinkedHashMap,TreeMap,HashTable,Properties
list的contains等 set因不可重复所以add肯定要比较,map中的entry<key,value> 等等操作,都要求对自定义类的操作要重写hashcode(),equal()---------原因(内容相同,不必地址相同)
是否是键值对象形式:
是:Map
键是否需要排序:
是:TreeMap
否:HashMap
不知道,就使用HashMap。
否:Collection
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不知道,就使用HashSet
否:List
要安全吗:
是:Vector
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList //双向链表
不知道,就使用ArrayList
不知道,就使用ArrayList
2 .ConcurrentHashMap 线程安全,锁分段,get无锁,put用synchronized(f)分段对象锁保证同步
CopyOnWriteArrayList 通过持有final transient ReentrantLock保证线程安全
3 . map增删改查
clear() 从 Map 中删除所有映射
remove(Object key) 从 Map 中删除键和关联的值
put(Object key, Object value) 将指定值与指定键相关联
putAll(Map t) 将指定 Map 中的所有映射复制到此 map
get(Object key) 从map中获取键为key的值
4:集合的常见方法及遍历方式
Collection:
add()
remove()
contains()
iterator()
size()
遍历:
增强for
迭代器
|--List
get()
遍历:
普通for
|--Set
Map:
put()
remove()
containskey(),containsValue()
keySet()
get()
value()
entrySet()
size()
遍历:
根据键找值
根据键值对对象分别找键和值
上一篇: 2020-12-15
下一篇: 浅谈Javascript异步和单线程