Java之List&Set&Map详解


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:
booleanadd(E e) 将指定的元素添加到此列表的尾部。
 
voidadd(int index, E element) 将指定的元素插入此列表中的指定位置。
 
booleancontains(Object o) 如果此列表中包含指定的元素,则返回 true
voidclear() 移除此列表中的所有元素。
booleanremove(Object o)移除此列表中首次出现的指定元素(如果存在)。
Eset(int index, E element用指定的元素替代此列表中指定位置上的元素。
Object[]toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
Eget(int index)返回此列表中指定位置上的元素。
 
 
 
4.2LinkedList:基本的方法和 ArrayList 相同都是实现 Collection 中的方法
特有的方法:
Object[]toArray()按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
EgetLast() 返回此列表的最后一个元素
 
intindexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
intlastIndexOf(Object o)返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
booleanofferFirst(E e) 在此列表的开头插入指定的元素。
Epop() 从此列表所表示的堆栈处弹出一个元素。
voidpush(E e)将元素推入此列表所表示的堆栈
 
4.3 HashSet<T>方法:和 Collection 相同
4.4HashMap<K,V>方法:实现的 Map 接口中的方法
Vget(Object key)通过键来找值,没有返回null
booleanisEmpty()如果map为空则返回 true。
Set<K>keySet()返回此映射中所包含的键的 Set 集合,foreach获取每个键,通过Map的get()方法找对应的值
Vput(K key, V value)添加键值对,如果已经包含了该键,则就是修改键的内容
Vremove(Object key)从此映射中移除指定键的映射关系(如果存在)。并且返回被移除的value值
Set<K,V> entrySet()获取map中的键值对
 
5.Collections工具类:
5.1:
staticsort(List<T> list, Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。
<T> void
Sort()方法只能用于 List 集合中 , 一般的包装类型的直接 sort(List<T>) 将按照自然 ( 字母或者数字 ) 的升序排列,不能比较中文。
当T是自定义类型时,需要该类实现 Comparable 接口并且实现其中的 CompareTo() 方法,在方法中添加比较的规则。
5.2
static voidshuffle(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());
}
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值