Collection接口常用方法
①添加:
add(Object obj):只要是对象都可以添加
addAll(Collection c):添加另一个集合的元素
②删除:
clear():清空集合元素
remove(Object obj)删除某个元素对象
removeAll(Collection c):删除集合元素
③判断:
isEmpty():集合是否为空
contains(Object c):是否包含某个元素
contains(Collection c):是否包含某个集合
④获取:
size():获取集合大小
Iterator<E> iterator():获取迭代器对象,遍历集合
⑤其他:
Object[] toArray():集合转数组
retainAll(Collection c):两个集合交集操作
List
常用方法
增:add(Object obj)
删:remove(int index)或remove(Object obj)
改:set(int index, Object ele)
查:get(int index):传入一个,索引值得到值
插:add(int index, object ele)
长度:size()
遍历:
① Iterator迭代器方式
② 增强for循环
③ 普通的循环
Set
新建集合 HashSet<String> hashSet = new HashSet<String>();
添加元素 hashSet.add( );
删除元素 hashSet.remove( );
遍历操作
1. 增强for for( type type : hashSet)
2. 迭代器 Iterator<String> it = hashSet.iterator( );
判断 hashSet.contains( ); hashSet.isEmpty();
Map
HashMap
- HashMap是非同步的,它不是线程安全的,如果没有适当的同步代码,就不能在多个线程之间共享。
- HashMap允许一个空键和多个空值。
- HashMap快。
- 我们可以通过调用这段代码使HashMap同步:Map m = Collections.synchronizedMap(HashMap);
- HashMap由Iterator遍历。
- HashMap中的迭代器是fail-fast。
- HashMap继承AbstractMap类。
Hashtable
-
Hashtable是同步的。它是线程安全的,可以与多个线程共享。
-
Hashtable不允许空键或空值。
-
Hashtable是一个遗留类。
-
Hashtable是缓慢的。
-
Hashtable是内部同步的,不能取消同步。
-
Hashtable由枚举器和迭代器遍历。
-
Hashtable中的枚举器不会fail-fast(快速失败)。
-
Hashtable继承Dictionary类。
为了在多线程环境下安全地使用 HashMap,可以采取以下几种方式:
- 使用同步机制:可以使用线程安全的 Map 实现,如 ConcurrentHashMap,或者通过在访问 HashMap 时使用 synchronized 或其他锁机制来确保同一时间只有一个线程能够修改 HashMap。
- 使用并发容器:可以使用线程安全的并发容器,如 ConcurrentMap 或 CopyOnWriteMap,它们提供了并发访问的能力,适用于读多写少的场景。
- 使用线程封闭:可以将 HashMap 封闭在单个线程中,通过使用 ThreadLocal 或将 HashMap 作为局部变量在每个线程中进行操作,从而避免多线程访问导致的线程安全问题。