【JavaSE】Collections集合工具类专题

发布于:2023-01-17 ⋅ 阅读:(174) ⋅ 点赞:(0)

💁 个人主页:黄小黄的博客主页
❤️ 支持我:👍 点赞 🌷 收藏 🤘关注
🎏 格言:All miracles start from sometime somewhere, make it right now.
本文来自专栏:JavaSE从入门到精通
在这里插入图片描述


1 Collections 工具类常用方法

1.1 排序反转类

1.1.1 reverse()

反转 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.add("Youth");

        System.out.println("反转前 List = " + list);
        Collections.reverse(list);
        System.out.println("反转后 List = " + list);
    }
}

在这里插入图片描述

1.1.2 shuffle()

对 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.add("Youth");

        for (int i = 0; i < 5; i++) {
            Collections.shuffle(list);
            System.out.println("第" + (i+1) + "次打乱后 List = " + list);
        }
    }
}

在这里插入图片描述

1.1.3 sort()

根据元素的自然顺序对指定 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.add("Youth");

        Collections.sort(list);
        System.out.println( "List = " + list);

    }
}

在这里插入图片描述

如果需要按照字符串的长度大小进行排序,则需要使用比较器:

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");
        list.add("Youth");

        Collections.sort(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o2).length() - ((String)o1).length();
            }
        });
        System.out.println( "List = " + list);

    }
}

在这里插入图片描述

1.2 查找、替换类

1.2.1 Object max()

Object max(Collection):根据元素的自然顺序,返回给定的集合中的最大元素,具体如下:

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.add("Youth");

        Comparable max = Collections.max(list);
        System.out.println(max);
    }
}

在这里插入图片描述

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);
    }
}

在这里插入图片描述


写在最后

🌟以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
在这里插入图片描述

共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”
在这里插入图片描述