Android开发Android开发Android开发经验谈

Java集合

2019-12-28  本文已影响0人  官子寒

1. 集合简介

Java集合继承体系

2. 集合详解

2.1 Collection接口

方法名 作用
boolean add(Object o) 向集合中添加元素
boolean addAll(Collection c) 向集合中添加元素
void clear() 清除所有元素
boolean contains(Object o) 是否包含指定元素
boolean containsAll(Collection c) 是否包含c里面的所有元素
boolean remove(Object o) 移除指定元素
Iterator iterator() 返回一个迭代对象
int size() 集合元素的个数
Object[] toArray() 转化成一个数组
removeIf(Predicate) 转化成一个数组
ArrayList<String> list = new ArrayList<>();
        list.add("一本书");
        list.add("123");
        list.add("1455555555");
        System.out.println(calAll(list,el -> ((String)el).length()>3));

public static int calAll(Collection books, Predicate predicate){
        int total = 0;
        for(Object o: books){
            if(predicate.test(o)){
                total += 1;
            }
        }
        return total;
    }

2.2 Iterator接口

方法名 作用
forEach() 遍历集合
hasNext() 被迭代的元素是否还没被迭代完
next() 被迭代的下一个元素
remove() 删除集合里上一次next方法返回的元素
forEachRemaining() 删除集合里上一次next方法返回的元素
ArrayList a = new ArrayList();
a.add("123");
a.add("12345");
a.forEach(obj ->{
      System.out.println(obj);
});

2.3 Set集合

2.3.1 HashSet类

2.3.2 LinkedHashSet类

2.3.3 TreeSet类

方法名 作用
first() 集合第一个元素
last() 集合最后一个元素
lower(Object o) 指定元素之前的元素,o不需要是TreeSet之中的
higher(Object o) 指定元素之后的元素,o不需要是TreeSet之中的
subSet(fromElement,toElement) Set的子集合

1. 自然排序
- Java提供了一个Comparable接口,定义了一个compareTo方法,来表示二者是否相等
- 被加入的元素必须已经实现了Comparable接口,否则会抛出异常
- 向TreeSet中加入的应该是同一种类型的对象
2. 定制排序
- 使用lambda表达式来定制TreeSet的排序规则

        String str1 = "123";
        String str2 = "1234";
        TreeSet ts = new TreeSet((o1,o2)->{
            return ((String)o1).length() == ((String)o2).length()? 0:-1;
        });
        ts.add(str1);
        ts.add(str2);
        System.out.println(ts);

2.3.4 EnumSet类

方法名 作用
allOf(Class elementType) 创建一个包含指定枚举类所有枚举值的EnumSet集合
complementOf(EnumSet) EnumSet剩下的枚举类中有的
copyOf(Collection c) 用Collection创建EnumSet
noneOf(Class elementType) 创建一个空的EnumSet,集合元素是elementType类型

2.3.5 Set性能比较

2.4 List集合

List接口新方法

方法名 作用
add(int index, Object element) 指定位置插入指定元素
addAll(int index, Collection element) 指定位置插入指定元素集合
get(int index) index索引处的元素
indexOf(Object o) 对象o在List集合中第一次出现的位置
lastIndexOf(Object o) 对象o在List集合中最后一次出现的位置
remove(int index) 删除并返回index索引处的元素
sort(Comparator c) 排序

ListIterator新方法

方法名 作用
hasPrevious 是否有前项
previous 返回迭代器上一个元素
add 往迭代器加入一个元素

2.4.1 ArrayList

2.5 Queue集合

方法名 作用
void add 将元素放入队列的尾部
boolean offer 将元素放入队列的尾部
element() 获取队列头部的元素,但是不删除该元素
Object peek() 获取队列头部的元素,但是不删除该元素。如果此队列为空,则返回null
Object poll() 获取队列头部的元素,删除该元素。如果此队列为空,则返回null
Object remove() 获取队列头部的元素,删除该元素
方法名 作用
void addFirst(Object o) 将元素放入双端队列的开头
void addLast(Object o) 将元素放入双端队列的末尾
Object peekFirst() 获取队列头部的元素,但是不删除该元素。如果此队列为空,则返回null
Object peekLast() 获取队列尾部的元素,但是不删除该元素。如果此队列为空,则返回null
Object pollFirst() 获取队列头部的元素,删除该元素。如果此队列为空,则返回null
Object pollLast() 获取队列尾部的元素,删除该元素。如果此队列为空,则返回null
... 一系列上述Queue接口中方法加上First/Last的方法
push(), pop(), peek() 一系列栈方法

2.5.1 LinkedList集合

2.6 Map集合

方法名 作用
void clear() 删除该Map对象中所有的key-value对
void containsKey(Object key) 是否包含指定key
void containsValue(Object value) 是否包含指定value
Set entrySet() key,Value组成的Set集合
Object put(Object key,Object value) 添加一个key-value
Object remove(Object key) 删除一个key-value
Collection values() 所有value组成的Collection
Collection keySet() 键组成的Set
Entry内部类

2.6.1 HashMap

   HashMap map = new HashMap();
        map.put("1","一");
        map.put("2","二");
        for(Object o :map.entrySet()){
            System.out.println((((Map.Entry)o).getKey()));
        }

2.6.2 LinkedHashMap

2.6.3 SortedMap接口和TreeMap

排序方式

  1. 自然排序
  2. 定制排序

3 Collections工具类

Collections对List集合元素操作

3.1 排序操作

方法名 作用
void reverse(List list) 反转List
void shuffle(List list) 随机排序List
void sort(List list) 根据元素的自然顺序对指定List集合的元素按自然顺序排序
void sort(List list, Comparator c) 根据元素的定制顺序对指定List集合的元素按自然顺序排序
void swap(List list, int i, int j) 交换List中的i和j处的元素
void rotate(List list, int distance) 当distance为正数时,将list集合的后distance个元素整体移到前面;当distance为负数时,将list集合的前distance个元素整体移到后面
ArrayList al = new ArrayList();
        for(int i = 1; i<50;i++){
            al.add("number is " + i);
        }
        Collections.reverse(al);
        System.out.println(al); //翻转List
        Collections.shuffle(al); //List随机排序

3.2 查找、替换操作

方法名 作用
int binarySearch(List list, Object key) 使用二分搜索法搜索指定的List集合,以获得指定对象在List中的索引
Object max(Collection coll) 根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection coll, Comparator comp) 根据comparator顺序,返回给定集合中的最大元素
Object min(Collection coll) 根据元素的自然顺序,返回给定集合中的最小元素
Object min(Collection coll, Comparator comp) 根据comparator顺序,返回给定集合中的最小元素
int frequency(Collection c, Object o) 返回o在c中出现的次数

3.3 同步控制

 Collections.synchronizedList(al);
Set set = Set.of("Java","Kotlin","Go","Swift");
        System.out.println(set);
        //以下将导致错误
        set.add("123");
上一篇 下一篇

猜你喜欢

热点阅读