<返回更多

Java集合的常见用法你知道多少?

2020-06-04    
加入收藏

一、集合与数组的区别

相同点:都是用来存储数据的。不同点:1.集合带array的,底层由数组实现,还有一部分由其他方式(树、链表等)实现。2.数组大小固定,而集合没有固定的大小,更方便存储。3.数组只能放一种类型,集合不考虑泛型可以存多种类型。4.集合放基本类型是通过装箱拆箱(包装类与基本数据类型的转换)来实现的。(写泛形的时候不能用int,而要用Integer)

二、几种常用集合之间的关系

Java集合的常见用法你知道多少?

 

Map接口自成一系,是以键值对(Key,Value)方式存储数据的,属于双列集合。Set接口的实现类: HashSet、LinkedHashSet、TreeSet。List接口的实现类:ArrayList、LinkedList、Vector(线程安全)。Queue接口的实现类 : LinkedList、PriorityQueue。(没怎么用过,混个脸熟)Map接口的实现类:HashMap、TreeMap、Hashtable(线程安全)。

三、每种集合的性质

3.1Collection接口(单列)

Collection接口的常用方法:

add(T t) //添加指定元素 
remove(T t) //删除指定元素 
isEmpty() //集合是否为空 
iterator() //获得迭代器(Iterator类型),一般用于遍历 
size() //获得元素的个数 
contains(T t) //是否包含某元素

3.1.1.List 有序,可重复

List接口的常用方法

add(int index, T t) //向指定位置添加元素 
remove(int index) //删除指定元素 
get(int index) //获取指定位置的元素 
set(int index, T t) //修改指定位置的元素 
indexOf(T t) //获取指定元素的位置

ArrayList 底层数据结构是数组,查询快,增删慢。ArrayList的常用方法都是从List继承来的,就不多说了。LinkedList 底层数据结构是链表,查询慢,增删快。LinkedList 的常用方法:

getFirst() //获取第一个元素 
getLast() //获取最后一个元素 
offer(T t) //在最后位置追加元素 
offerFirst(T t) //在开头位置追加元素 
offerLast(T t) //在最后位置追加元素 
removeFirst() //删除第一个元素 
removeLast() //删除最后一个元素

Vector 底层数据结构是数组,线程安全,效率低。使用方法和ArrayList基本一样。

3.1.2.Set 不可重复

方法:常用的都是从Collection继承到的,就轻松了许多。HashSet (无序,唯一)底层数据结构是哈希表。如何保证唯一:hashCode()和equals()LinkedHashSet(有序,唯一)底层数据结构是链表和哈希表。链表保证有序,哈希表保证唯一。TreeSet(有序,唯一)

底层数据结构是红黑树。

1.如何排序(add()方法的重载):自然排序(无参add()调用Comparable的compareTo()方法)定制排序 (add(? extends Comparator)调用类实现的compare()方法)注:装载时若自然排序无法进行排序会报错,所以对装进集合的类实现Comparator接口进行自定义排序

2.如何保证唯一:根据比较的返回值是否为0来决定。

3.1.3.Queue 有序(FIFO先进先出)

PriorityQueue 有序(定制排序、自然排序(也就是说不是所谓的FIFO),我用的少,所以不是特别了解)

3.2Map接口(双列)

put (K key,V value):把键与值添加到Map集合中  
remove (K key):删除key对应的值  
get(K  key):根据指定的键,获取对应的值  
containKey(K key):判断是否包含指定的键  
entrySet() :返回Map.Entry型对象,用于遍历。(entry.getKey()/entry.getValue()) 
keySet(K key):获取Map集合中所有的Key,存储到set集合中(用于遍历)  
values(V value) :获取Map集合中所有的Value,存储到Collection集合中(用于遍历)

3.2.1HashMap

HashMap的常用方法都继承自Map接口,就不细说了。HashMap是最常用的键值对存储容器。

3.2.2.TreeMap

构造器:TreeMap()//创建一个空TreeMap,keys按照自然排序TreeMap(Comparator comparator)//创建一个空TreeMap,按照自定义的comparator排序。3.2.3.Hashtable(线程安全)

与HashMap的异同:同:Hashtable和HashMap使用方法基本一致。异:HashMap线程不安全,而Hashtable是线程安全的;HashMap的K和V都可以为null,而Hashtable的K,V都不能为null。

四、总结

1.没有其他要求时,最常用ArrayList、HashMap;2.不能重复时,用HashSet;3.需要线程安全时,用Vector、Hashtable。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>