1.常用的集合:
Colleaction
|---List
|--ArrayList<T>
|--LinkedList<T>
|--Set
|--HashSet<T>
|--LinkedHashSet<T>
Map
|--HashMap<K,V>
|--LinkedHashMap<K,V>
2.ArrayLsit<T>和
HashSet<T>,HashMap<K,V>
之间的比较
:
2.1 ArrayList底层是用数组来实现的,
HashSet
和
HashMap
底层是
hash
表实现的
2.2 ArrayList的元素存入和取出时的顺序可以保证一致,而
HashSet
和
HashMap
不能保证一致
,
但是
LinkedHashSethe LinkedHashMap
可以保证一致。
2.3 ArrayListZ中可以存放重复的元素,而
HashSet
和
HashMap
不能存放重复的元素
3.LinkedList和
ArrayList
的比较:
LinkedList底层采用的是链表:增删快,查找慢
ArrayList底层采用的是数组:查找慢,增删快
4.ArrayList<T>和
HashSet<T>,HashMap<K,V>
常用的方法总结:
4.1ArrayList:
boolean | add(E e) 将指定的元素添加到此列表的尾部。 |
void | add(int index, E element) 将指定的元素插入此列表中的指定位置。 |
boolean | contains(Object o) 如果此列表中包含指定的元素,则返回 true |
void | clear() 移除此列表中的所有元素。 |
boolean | remove(Object o)移除此列表中首次出现的指定元素(如果存在)。 |
E | set(int index, E element用指定的元素替代此列表中指定位置上的元素。 |
Object[] | toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 |
E | get(int index)返回此列表中指定位置上的元素。 |
4.2LinkedList:基本的方法和
ArrayList
相同都是实现
Collection
中的方法
特有的方法:
Object[] | toArray()按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 |
E | getLast() 返回此列表的最后一个元素 |
int | indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。 |
int | lastIndexOf(Object o)返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。 |
boolean | offerFirst(E e) 在此列表的开头插入指定的元素。 |
E | pop() 从此列表所表示的堆栈处弹出一个元素。 |
void | push(E e)将元素推入此列表所表示的堆栈 |
4.3 HashSet<T>方法:和
Collection
相同
4.4HashMap<K,V>方法:实现的
Map
接口中的方法
V | get(Object key)通过键来找值,没有返回null |
boolean | isEmpty()如果map为空则返回 true。 |
Set<K> | keySet()返回此映射中所包含的键的 Set 集合,foreach获取每个键,通过Map的get()方法找对应的值 |
V | put(K key, V value)添加键值对,如果已经包含了该键,则就是修改键的内容 |
V | remove(Object key)从此映射中移除指定键的映射关系(如果存在)。并且返回被移除的value值 |
Set<K,V> | entrySet()获取map中的键值对 |
5.Collections工具类:
5.1:
static | sort(List<T> list, Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。 |
<T> void |
Sort()方法只能用于
List
集合中
,
一般的包装类型的直接
sort(List<T>)
将按照自然
(
字母或者数字
)
的升序排列,不能比较中文。
当T是自定义类型时,需要该类实现
Comparable
接口并且实现其中的
CompareTo()
方法,在方法中添加比较的规则。
5.2
static void | shuffle(List<?> list) 随机打乱集合中元素的顺序 |
6.三种集合的遍历总结:
ArrayList<T> list = new ArrayList<T>;
第一种方式:增强for循环
for(T t: list){
直接得到t;
}
第二种方式:Iterator 迭代器 和
ListIterator
迭代器
Iterator 迭代器中不能并发修改集合
ListIterator 迭代器有
add
方法可以并发修改集合
Iterator<T> iterator = list.iterator();
While(iterator.hashNext()){
Iterator.next();
}
HashSet<T>
同上
HashMap<K,V>的遍历的两种方式:
1.通过键找值:使用Set<K> keySet<>;方法获取
map
集合中所有的
Key
值,再增强
for
循环遍历得每个
key
,通过
get(key)
获得对应的值
Set<String>
keySet
=
map
.keySet();
for
(String
key
:
keySet
) {
System.
out
.println(
key
+
"="
+
map
.get(
key
));
}
2.一次获取key和
value
:使用
entrySet()
方法同时获取键值对,遍历获取每个键和值
Set<Entry<String, HashMap<String, String>>>
entrySet
=
map
.entrySet();
for
(Entry<String, HashMap<String, String>>
entry
:
entrySet
) {
System.
out
.println(
entry
.getKey()+
"="
+
entry
.getValue());
}