Java中关于List,Map,Set用法整理

Java中关于List,Map,Set用法整理

List

List是一个继承于Collection的接口,List中的元素可以重复,并且是有序的。ArrayList,Linked,Vector都实现了List接口,是List的三种实现。

分类

ArrayList

ArrayList底层是用数组实现的。和ArrayList相比,它增删的速度较快,但是查询和修改值的速度较慢。

LinkedList

LinkedList底层是通过双向链表实现的。

Vector

Vector和ArrayList一样,都是通过数组实现的,但是Vector是线程安全的。一般都不用Vector,想要在多线程环境下使用,可以用List list = Collections.synchronizedList(new ArrayList<>());

常见用法

void add(int index,E element)
//在指定位置插入元素
boolean addAll(int index,Collection<? extends E> c)
//在指定位置插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false
E get(int index)
//返回list集合中指定索引位置的元素
int indexOf(Object o)
//返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,就返回-1
E remove(int index)
//删除指定索引的对象
E set(int index,E element)
//在索引为index位置的元素更改为element元素

Map

Map集合中的Key是不能重复

分类

HashMap

无序,遍历时取得数据的顺序完全是随机的,最多只允许一条记录的键为null

TreeMap

能够把它保存的记录根据键排序,默认是按键值的升序排序。由于TreeMap需要排序,所以需要一个Comparator为键值比较大小,也是用来Comparator定位的。

  1. Comparator可以在创建TreeMap时指定,传参。
  2. 如果创建时没有确定,那么就会使用key.compare()方法,这就要求key必须实现Comparator接口。
  3. TreeMap是使用Tree数据结构实现的,所以使用Comparator接口就可以完成定位了
LinkedHashMap

保存了记录的插入顺序

常见用法

V put(K key,V value)
//向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value
void putAll(Map<? extends K,? extends V> m)
//向map集合中添加指定集合的所有元素
void clear()
//把map集合中的所有的键值删除
boolean containsKey(Object key)
//检测出map集合中有没有包含Key为key的元素,如果有则返回true,没有返回false
boolean containsValue(Object value)
//检测出map集合中有没有包含Value为value的元素,如果有则返回true,否则返回false
Set<Map.Entry<K,V>> entrySet()
//返回map到一个Set集合中
V get(Object key)
//根据map集合中的元素的Key来获取相应元素的Value
boolean isEmpty()
//检测出map集合中是否有元素,如果没有则返回true,如果有则返回false
Set<K> keySet()
//返回map集合中所有Key
V remove (Object key)
//删除Key值为key的元素
Collections<V> values()
//返回map集合中的所有的Value到一个Collection集合

Map的四种遍历方法

  • 在for循环中使用entries实现Map的遍历
for(Map.Entry<Object,Object> entry:map.entrySet()){
	Object key = entry.getKey();
	Object value = entry.getValue();
}
  • 在for循环中遍历key或values
for (Object key:map.keySet()){...}
for(Object value:map.values()){...}
  • 通过Iterator遍历
Iterator<Entry<Object,Object>> entries = map.entrySet().iterator();
  • 通过键找值遍历
for (Object key:map.keySet()){
	Object value = map.get(key);
}

Set

不包含重复元素

分类

HashSet

采用hash来实现,其中的元素没有按顺序排列,无序

TreeSet

采用树结构(红黑树算法)实现,元素按顺序进行排列,有序

LinkedHashSet

记录插入顺序

常见用法

add()//向集合中添加元素
clear()//去掉集合中所有的元素
contains()//判断集合中是否包含某一个元素
isEmpty()//判断集合是否为空
Iterator()//返回一个Iterator对象
remove()//从集合中去掉特定的对象
size()//返回集合的大小
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值