Java零基础入门-Collections(上)

哈喽,各位小伙伴们好,我是喵手。

今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。

我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

在前几期,我们是有讲过Collection类的,不知道大家还是否有印象,我们都知道,Collection分为两类,一类是单列集合,一类是双列集合。

而今天我们就来讲一期Collections(其包位置:java.utils.Collections),它?与Collection类?不要误解,Collections是一集合工具类,用来对集合进行一系列操作的工具类。

二、常用api

1️⃣public static void shuffle(List<?> list)

其作用:将集合元素打乱顺序。

2️⃣public static <T> boolean addAll(Collection<? super T> c, T... elements)

其作用:往集合中添加一些指定元素

3️⃣public static <T extends Comparable<? super T>> void sort(List<T> list)

其作用:将集合中的元素按默认的规则进行排序。

4️⃣public static <T> void sort(List<T> list, Comparator<? super T> c)

其作用:将集合中的元素按指定的规则进行排序。

...

还有些其他的api,这个就等大家好好去研究研究了呀。

三、实例演示

1️⃣shuffle()

如下我实例来演示一下如何通过Collections工具集进行shuffle()方法进行实操,仅供参考。

具体演示代码如下:

java 复制代码
    @Test
    public void testShuffle(){

        List<String> list = new ArrayList<>();

        //采用工具类往集合中一并添加元素
        Collections.addAll(list, "a", "b", "c", "d");

        System.out.println("打乱前:" + list);

        //对list元素进行打乱
        Collections.shuffle(list);

        System.out.println("打乱后:" + list);
    }

控制台打印输出:

2️⃣addAll()

如下我实例来演示一下如何通过Collections工具集进行addAll()方法进行实操,仅供参考。

具体演示代码如下:

java 复制代码
    @Test
    public void testAddAll() {

        List<String> list = new ArrayList<>();
        //传统元素添加方式:
        //比如如下传统添加,是一个一个add
//        list.add("a");
//        list.add("b");
//        list.add("c");
//        list.add("d");

        //而采用工具类往集合中可以一行一并添加元素
        Collections.addAll(list,"b","a","d","c");

        //list集合打印
        System.out.println(list);
    }

控制台打印输出:

java 复制代码
[b, a, d, c]

3️⃣sort(List<T> list)

如下我实例来演示一下如何通过Collections工具集进行sort(List<T> list)方法进行实操,仅供参考。

具体演示代码如下:

java 复制代码
    @Test
    public void testSort() {

        List<String> list = new ArrayList<>();

        //采用工具类往集合中一并添加元素
        Collections.addAll(list, "b", "a", "d", "c");

        System.out.println("排序前:" + list);

        //对list进行排序
        Collections.sort(list);

        System.out.println("排序前:" + list);
    }

控制台打印输出:

4️⃣sort(List<T> list, Comparator<? super T> c)

说起Comparator比较器。那就有一段好说了,上述演示sort()是直接默认字符串排序,其实就等于public final class String implements java.io.Serializable, Comparable<String>, CharSequence{}.

String类实现了这个接口,并完成了比较规则的定义,但是这样就把这种排序规则写死了,那比如我想要字符串按照第一个字符降序排列,那这样的话我岂不是就要修改String的源代码?这显然不可能去修改String源码的,那我们怎么解决?

那么这个时候我们就可以使用sort(List<T> list,Comparator<? super T> ) 这个方法灵活的完成,其中里头涉及到一个重要参数Comparator<? super T>,那么它究竟是啥,请跟随我看下文:

四、Comparator比较器

1️⃣概述:

Comparator<? super T>接口,位于java.util包下。排序是Comparator能实现的功能之一,该接口代表一个比较器,比较器具有可比性!通俗地讲就是需要比较两个对象谁排在前谁排在后,那么比较的方法就是:比较其两个参数的顺序。

java 复制代码
public int compare(String o1, String o2)

其中两个对象(o1,o2)比较的结果有三种:大于,等于,小于。

如果要按照升序排序:则o1 小于o2,返回(负数),相等返回0,01大于02返回(正数)。

如果要按照降序排序:则o1 小于o2,返回(正数),相等返回0,01大于02返回(负数)。

2️⃣按首字母降序排序演示:

演示。按首字母进行降序排序。

具体演示代码如下:

java 复制代码
    @Test
    public void testSortComparator() {

        List<String> list = new ArrayList<>();

        //采用工具类往集合中一并添加元素
        Collections.addAll(list, "abc", "dab", "bac", "cad");

        //默认排序
        Collections.sort(list);
        System.out.println("默认sort排序为:" + list);

        //排序规则:按照第一个单词的降序
        Collections.sort(list, new Comparator<String>() {

            @Override
            public int compare(String o1, String o2) {
                return o2.charAt(0) - o1.charAt(0);
            }
        });
        System.out.println("指定首字母降序排序为:" + list);
    }

3️⃣按首字母升序排序演示:

倘若你要首字母升序,你就改成o1.charAt(0) - o2.charAt(0) 即可。

... ...

好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

五、结尾

教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。


相关推荐
2202_7544215413 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
蓝染-惣右介16 分钟前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
小林想被监督学习17 分钟前
idea怎么打开两个窗口,运行两个项目
java·ide·intellij-idea
HoneyMoose19 分钟前
IDEA 2024.3 版本更新主要功能介绍
java·ide·intellij-idea
我只会发热20 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
是老余21 分钟前
本地可运行,jar包运行错误【解决实例】:通过IDEA的maven package打包多模块项目
java·maven·intellij-idea·jar
crazy_wsp22 分钟前
IDEA怎么定位java类所用maven依赖版本及引用位置
java·maven·intellij-idea
.Ayang24 分钟前
tomcat 后台部署 war 包 getshell
java·计算机网络·安全·web安全·网络安全·tomcat·网络攻击模型
一直学习永不止步30 分钟前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
hummhumm44 分钟前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j