【JavaSE】Collections集合工具类专题(下)

简介: 文章目录1 Collections 工具类常用方法1.1 排序反转类1.1.1 reverse()1.1.2 shuffle()1.1.3 sort()1.2 查找、替换类1.2.1 Object max()1.2.2 frequency()1.2.3 copy()1.2.4 replaceAll()


Object max(Collection, Comparator):根据 Comparator 指定的顺序,返回给定集合的最大元素, 具体如下(返回长度最大的元素):

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionsTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("drunk");
        list.add("abc");
        list.add("king");
        Object max = Collections.max(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length() - ((String)o2).length();
            }
        });
        System.out.println(max);
    }
}



min()方法与该方法使用方式类似,不再赘述。

1.2.2 frequency()

int frequency(Collection, Object):返回指定集合中指定元素出现的次数。 具体如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionsTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("drunk");
        list.add("abc");
        list.add("abc");
        list.add("abc");
        list.add("king");
        int abc = Collections.frequency(list, "abc");
        System.out.println("abc 出现的次数: " + abc);
    }
}


1.2.3 copy()

void copy(List dest, List src):将 src 中的内容复制到 dest 中。 但是需要注意的是,直接copy会抛出数组越界异常,来看下面的例子,尝试将list的数据复制到dest中:



我们追进 Collection 工具类的 copy() 源码: 发现,如果新的list大小比原来需要复制的list小,则直接抛出异常!

    public static <T> void copy(List<? super T> dest, List<? extends T> src) {
        int srcSize = src.size();
        if (srcSize > dest.size())
            throw new IndexOutOfBoundsException("Source does not fit in dest");
        if (srcSize < COPY_THRESHOLD ||
            (src instanceof RandomAccess && dest instanceof RandomAccess)) {
            for (int i=0; i<srcSize; i++)
                dest.set(i, src.get(i));
        } else {
            ListIterator<? super T> di=dest.listIterator();
            ListIterator<? extends T> si=src.listIterator();
            for (int i=0; i<srcSize; i++) {
                di.next();
                di.set(si.next());
            }
        }
    }

为了完成 copy 操作,首先我们需要给 dest 进行赋值,使其大小和 list 相同。 具体如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionsTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("drunk");
        list.add("abc");
        list.add("king");
        List dest = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            dest.add("");
        }
        Collections.copy(dest, list);
        System.out.println("list = " + list);
        System.out.println("dest = " + dest);
    }
}


1.2.4 replaceAll()

boolean replaceAll(List list, Object oldVal, Object newVal):使用新值替换 list 对象中所有的旧值。 具体如下:替换所有的abc为祢豆子

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionsTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("drunk");
        list.add("abc");
        list.add("abc");
        list.add("abc");
        list.add("king");
        System.out.println("原list = " + list);
        Collections.replaceAll(list, "abc", "祢豆子");
        System.out.println("新list = " + list);
    }
}

相关文章
|
6月前
|
安全 算法 Java
Java Collections工具类:常用方法与技巧
Java Collections工具类:常用方法与技巧
103 0
|
6月前
|
Java 开发工具
JavaSE基础篇:Arrays数组工具类
JavaSE基础篇:Arrays数组工具类
|
11月前
|
Java
【零基础学Java】—Collections集合工具类(四十二)
【零基础学Java】—Collections集合工具类(四十二)
|
存储 Java
Java集合Collections工具类
Java集合Collections工具类
66 0
|
存储 Java 索引
Arrays Collections工具类
Arrays Collections工具类
Java基础进阶集合-Collections工具类
Java基础进阶集合-Collections工具类
Java基础进阶集合-Collections工具类
|
安全 Java
Java集合(8)--集合工具类Collections
Java集合(8)--集合工具类Collections
104 0
Java集合(8)--集合工具类Collections
|
Java 开发者
Collections 工具类|学习笔记
快速学习 Collections 工具类
Collections 工具类|学习笔记