Java中List常用API整理

Java中List常用API整理

List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来。

1 collection的API介绍

1.1 boolean add(E e)

添加元素到Collection集合中。

1.2 boolean addAll(Collection<? extends E> c)

将指定c中的所有元素都添加到此Collection集合中。

1.3 void clear()

移除此collection集合中的所有元素

1.4 boolean contains(Object o)

检查Collection集合中是否包含o对象,如果包含则返回true,否则返回false。

1.5 boolean containsAll(Collection<?> c)

检查Collection集合中是否包含c的全部对象,全部包含则返回true,否则返回false。

1.6 boolean equals(Object o)

比较此collection集合与指定对象是否相等,是比较的是里面元素是否相等,而不是比较地址是否相等。

在Object类中,equals()方法底层就是“==”,也就是说就是比较地址是否相等,但是继承后,大多数的类都重写了该方法。

由于Collection是接口,不能直接new对象,所以只能new一个它的子类。

下面这个是Object类的equals()方法,底层就是用"=="。

下面我们来看Collection的一个实现类Vector。

Vector是继承了AbstractList

所以它的equals方法是调用了父类的方法

我们再跟进去看看。真的是重写的equals方法

1.7 int hashCode()

返回此Collection集合的哈希码值。

1.9 boolean isEmpty()

检查Collection集合是否包含有元素,如果没有包含元素,则返回true,否则返回false。

此方法与contains方法的区别是,此方法是判断集合是否包含有元素,就是说,如果一个元素都没有的话就返回true,如果有一个或者以上就返回false。

contains的方法是判断集合中是否包含特定的元素,如果包含特定的元素就返回true,如果没有包含特定元素就返回false。

1.9 Iterator<E> iterator()

返回在此collection集合的元素上进行迭代的迭代器

注意:迭代过程中不能用集合里的添加、删除等方法修改集合,不然会报错。

如果想在迭代过程中还想操作集合,那么只能用迭代器类里面的方法。

1.10 boolean remove(Object o)


从collection集合中删除指定的元素,如果集合中有这个元素,并且删除成功,那么就返回true,否则返回false。

1.11 boolean removeAll(Collection<?> c)

从集合中删除c集合中所有的元素

1.12 boolean retainAll(Collection<?> c)

集合中仅保留c集合中的所有元素

1.13 int size()

返回集合中元素个数

1.14 Object[] toArray()

返回包含此collection集合中所有元素的数组

2 关系介绍

Map<K,V>是键值对,K - 此映射所维护的键的类型,V - 映射值的类型。键值是一一对应的关系;

Collection是只有键,底层也是由键值对,但是值的类型被隐藏起来。

2.1 Collection

List里面可以放重复的元素,Set里面不可以放重复的元素。

1、ArrayList底层是用数组实现的,LinkedList底层是用链表实现的,Vector底层也是用数组实现的。
2、HashSet底层是哈希算法实现的,TreeSet底层是用二叉树实现的,LinkedHashSet底层是用链表实现的。

2.2 Map

1、HashMap底层是哈希算法实现的,TreeMap底层是用二叉树实现的,Hashtable底层是哈希算法实现的,LinkedHashMap底层是用链表实现的。

Vector、Hashtable是线程安全的;

ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、LinkedHashMap是线程不安全的。

3 list常见API整理

3.1 void add(int index, E element)

在指定位置插入元素,后面的元素都往后移一个元素。

3.2 boolean addAll(int index, Collection c)

在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false。

意思就是当插入的集合c没有元素,那么就返回false,如果集合c有元素,插入成功,那么就返回true。

3.3 E get(int index)

返回list集合中指定索引位置的元素

3.4 int indexOf(Object o)

返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1

3.5 ListIterator<E> listIterator()

返回此列表元素的列表迭代器(按适当顺序)。

listIterator和iterator的区别是什么呢?下面这篇博客比较详细的分析,可以参考。

https://blog.csdn.net/longshengguoji/article/details/41551491

这里大概讲一下他们的区别:

当只需要遍历集合时,两个迭代器的功能都是一样。

但是listIterator迭代器只能用于List和他的实现子类,iterator迭代器可以用于所有的集合使用。

所不同的就是listIterator迭代器的功能会比iterator迭代器的功能要多。

listIterator迭代器可以在遍历集合时添加、修改和删除,而iterator迭代器在遍历集合时只有删除。

3.6 ListIterator<E> listIterator(int index)

从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)。

和上面那个迭代器不同的就是多了一个参数,就是能控制迭代器开始的位置。

3.7 E remove(int index)

删除指定索引的对象

3.8 E set(int index, E element)

在索引为index位置的元素更改为element元素

3.9 List<E> subList(int fromIndex, int toIndex)

返回从索引fromIndex到toIndex的元素集合,包左不包右

4 set常见API整理


Set集合与List集合的区别就是,Set集合的元素不能重复,List集合的元素是可以重复的。

4 map常用API整理

Map集合和Collection集合的区别

Map集合是有Key和Value的,Collection集合是只有Value。

Collection集合底层也是有Key和Value,只是隐藏起来。

4.1 V put(K key, V value)

向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value。

就是说Map集合中的Key是不能重复的,这就类似于Set集合中元素不能重复,但是Map集合中的Value是可以重复。

4.2 void putAll(Map<? extends K,? extends V> m)

向map集合中添加指定集合的所有元素

4.3 void clear()

把map集合中所有的键值删除

4.4 boolean containsKey(Object key)

检出map集合中有没有包含Key为key的元素,如果有则返回true,否则返回false。

4.5 boolean containsValue(Object value)

检出map集合中有没有包含Value为value的元素,如果有则返回true,否则返回false。

4.6 Set<Map.Entry<K,V>> entrySet()

返回map到一个Set集合中,以map集合中的Key=Value的形式返回到set中。

补充:一般我们遍历HashMap的时候,推荐是用这种方式。不用再通过map的get(key)方法拿值,性能会提升。参考sonar代码规范

4.7 boolean equals(Object o)

判断两个Set集合的元素是否相同

底层也是重写了equals方法

查看HashMap集合时,没有发现equals方法,那么我们就去找他的父类。


4.8 V get(Object key)

根据map集合中元素的Key来获取相应元素的Value

4.9 int hashCode()

返回map集合的哈希码值

4.10 boolean isEmpty()

检出map集合中是否有元素,如果没有则返回true,如果有元素则返回false

4.11 Set<K> keySet()

返回map集合中所有Key

4.12 V remove(Object key)

删除Key为key值的元素

4.13 int size()

返回map集合中元素个数

4.14 Collection<V> values()

返回map集合中所有的Value到一个Collection集合

5 hashMap的API整理

5.1 public Object clone()

返回hashMap集合的副本

其余的方法都是实现Map集合的, 见上。

6 hashTable的API整理

6.1 public Object clone()

返回Hashtable的副本

6.2 public Enumeration<V> elements()

返回此哈希表中的值的枚举

其他的方法都是实现Map集合的方法

7 TreeMap的API整理

7.1 public Map.Entry<K,V> ceilingEntry(K key)

返回指定的Key大于或等于的最小值的元素,如果没有,则返回null

7.2 public K ceilingKey(K key)

返回指定的Key大于或等于的最小值的Key,如果没有,则返回null

7.3 public Object clone()

返回集合的副本

7.4 public Comparator<? super K> comparator()

如果使用默认的比较器,就返回null,如果使用其他的比较器,则返回比较器的哈希码值

7.5 public NavigableSet<K> descendingKeySet()

返回集合的全部Key,并且是逆序的

7.6 public NavigableMap<K,V> descendingMap()

把集合逆序返回

7.8 public Map.Entry<K,V> firstEntry()

返回集合中最小Key的元素

7.9 public K firstKey()

返回集合中最小Key的key

7.10 public Map.Entry<K,V> floorEntry(K key)

与ceilingEntry()方法相反,是返回小于等于key的最大Key的元素

7.11 public K floorKey(K key)


返回小于等于key的最大Key的key

7.12 public SortedMap<K,V> headMap(K toKey)

返回Key小于toKey的所有元素

7.13 public NavigableMap<K,V> headMap(K toKey, boolean inclusive)

当inclusive为true时,就是返回Key小于等于toKey的所有元素

7.14 public Map.Entry<K,V> higherEntry(K key)

返回Key大于key的所有元素

7.15 public K higherKey(K key)

返回Key大于key的所有Key

7.16 public Map.Entry<K,V> lastEntry()

返回Key最大的元素

7.17 public K lastKey()

返回Key最大的Key

7.18 public Map.Entry<K,V> lowerEntry(K key)

返回小于key的最大元素

7.19 public K lowerKey(K key)

返回小于key最大的Key

7.20 public Map.Entry<K,V> pollFirstEntry()

删除key最小的元素

7.21 public Map.Entry<K,V> pollLastEntry()

删除最大Key的元素

7.22 public NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)

截取集合中Key从fromKey到toKey的元素,否是截取他们本身,取决于true或者false

7.23 public SortedMap<K,V> subMap(K fromKey, K toKey)

截取集合中Key从fromKey到toKey的元素,包括fromKey,不包括toKey

7.24 public SortedMap<K,V> tailMap(K fromKey)

截取Key大于等于fromKey的所有元素

7.25 public NavigableMap<K,V> tailMap(K fromKey, boolean inclusive)

当inclusive为true时,截取Key大于等于fromKey的所有元素,否则截取Key大于fromKey的所有元素

8 其余注意点

  1. list 里面可以嵌套list
import java.util.ArrayList;
import java.util.List;
 
 
public class Test {
    
    
    public static void main(String[] args){
    
    
        List<List<List<String>>> listListList = new ArrayList<List<List<String>>>();
        List<List<String>> listList = new ArrayList<List<String>>();
        List<String> list = new ArrayList<String>();
        list.add("test");
        listList.add(list);
        listListList.add(listList);
        System.out.println(listListList);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_51899357/article/details/121704254
今日推荐