Java之List&Set&Map详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24831411/article/details/78019621

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());
}
 

猜你喜欢

转载自blog.csdn.net/qq_24831411/article/details/78019621
今日推荐