首页 > 其他分享 >Collections工具类

Collections工具类

时间:2023-11-20 12:22:20浏览次数:34  
标签:name age list Collections Student new 工具 public

Collection工具类

Collections工具类,里面的方法全是静态方法.

1. 二分查找List

语法:

static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)  :使用二叉搜索算法搜索指定对象的指定列表。

举个例子:

 1 public class Test {
 2     public static void main(String[] args) {
 3         //生成无参集合
 4         ArrayList<Student> list=new ArrayList<>();
 5         //添加元素
 6         list.add(new Student("张三",18));
 7         list.add(new Student("李四",29));
 8         list.add(new Student("王五",15));
 9         list.add(new Student("老刘",30));
10         list.add(new Student("李华",20));
11         //排序后的集合结果
12         Collections.sort(list,new Comparator<Student>() {
13             //使用匿名接口实现类的方式
14             @Override
15             public int compare(Student o1, Student o2) {
16                 return o1.getAge() - o2.getAge();
17             }
18         });
19         for (Student student:list) {
20             System.out.println(student);
21         }
22         //使用二分查找
23         int index = Collections.binarySearch(list, new Student("李华", 20), new Comparator<Student>() {
24             //使用匿名接口实现类的方式
25             @Override
26             public int compare(Student o1, Student o2) {
27                 return o1.getAge() - o2.getAge();
28             }
29         });
30         System.out.println("查找的元素在"+index+"位置");
31     }
32 }
33 class Student{
34     private String name;
35     private int age;
36 
37 
38     public Student() {
39     }
40 
41     public Student(String name, int age) {
42         this.name = name;
43         this.age = age;
44     }
45 
46     public String getName() {
47         return name;
48     }
49 
50     public void setName(String name) {
51         this.name = name;
52     }
53 
54     public int getAge() {
55         return age;
56     }
57 
58     public void setAge(int age) {
59         this.age = age;
60     }
61 
62     public String toString() {
63         return "Student{name = " + name + ", age = " + age + "}";
64     }
65 }

效果展示:

 2. 倒置集合

语法:

static void reverse(List<?> list):反转指定列表中元素的顺序。

举个例子:

 1 public class Test {
 2     public static void main(String[] args) {
 3         //生成无参集合
 4         ArrayList<Student> list=new ArrayList<>();
 5         //添加元素
 6         list.add(new Student("张三",18));
 7         list.add(new Student("李四",29));
 8         list.add(new Student("王五",15));
 9         list.add(new Student("老刘",30));
10         list.add(new Student("李华",20));
11         System.out.println("反转前的集合");
12         for (Student student:list) {
13             System.out.println(student);
14         }
15         System.out.println("反转后的集合");
16         Collections.reverse(list);
17         for (Student student:list) {
18             System.out.println(student);
19         }
20     }
21 }
22 class Student{
23     private String name;
24     private int age;
25 
26 
27     public Student() {
28     }
29 
30     public Student(String name, int age) {
31         this.name = name;
32         this.age = age;
33     }
34 
35     public String getName() {
36         return name;
37     }
38 
39     public void setName(String name) {
40         this.name = name;
41     }
42 
43     public int getAge() {
44         return age;
45     }
46 
47     public void setAge(int age) {
48         this.age = age;
49     }
50 
51     public String toString() {
52         return "Student{name = " + name + ", age = " + age + "}";
53     }
54 }

效果展示:

 3. 洗牌功能

语法:

static void shuffle(List<?> list) :使用默认的随机源随机排列指定的列表。

举个例子:

 1 public class Test {
 2     public static void main(String[] args) {
 3         //生成无参集合
 4         ArrayList<Student> list=new ArrayList<>();
 5         //添加元素
 6         list.add(new Student("张三",18));
 7         list.add(new Student("李四",29));
 8         list.add(new Student("王五",15));
 9         list.add(new Student("老刘",30));
10         list.add(new Student("李华",20));
11         System.out.println("洗牌前的集合");
12         for (Student student:list) {
13             System.out.println(student);
14         }
15         System.out.println("洗牌后的集合");
16         Collections.shuffle(list);
17         for (Student student:list) {
18             System.out.println(student);
19         }
20     }
21 }
22 class Student{
23     private String name;
24     private int age;
25 
26 
27     public Student() {
28     }
29 
30     public Student(String name, int age) {
31         this.name = name;
32         this.age = age;
33     }
34 
35     public String getName() {
36         return name;
37     }
38 
39     public void setName(String name) {
40         this.name = name;
41     }
42 
43     public int getAge() {
44         return age;
45     }
46 
47     public void setAge(int age) {
48         this.age = age;
49     }
50 
51     public String toString() {
52         return "Student{name = " + name + ", age = " + age + "}";
53     }
54 }

效果展示:

 4. 排序

语法:

static <T> void sort(List<T> list, Comparator<? super T> c) :根据指定的比较器引起的顺序对指定的列表进行排序

举个例子:

 1 public class Test {
 2     public static void main(String[] args) {
 3         //生成无参集合
 4         ArrayList<Student> list=new ArrayList<>();
 5         //添加元素
 6         list.add(new Student("张三",18));
 7         list.add(new Student("李四",29));
 8         list.add(new Student("王五",15));
 9         list.add(new Student("老刘",30));
10         list.add(new Student("李华",20));
11         System.out.println("排序后的集合");
12         Collections.sort(list, new Comparator<Student>() {
13             @Override
14             public int compare(Student o1, Student o2) {
15                 return o1.getAge()-o2.getAge();
16             }
17         });
18         for (Student student:list) {
19             System.out.println(student);
20         }
21         
22     }
23 }
24 class Student{
25     private String name;
26     private int age;
27 
28 
29     public Student() {
30     }
31 
32     public Student(String name, int age) {
33         this.name = name;
34         this.age = age;
35     }
36 
37     public String getName() {
38         return name;
39     }
40 
41     public void setName(String name) {
42         this.name = name;
43     }
44 
45     public int getAge() {
46         return age;
47     }
48 
49     public void setAge(int age) {
50         this.age = age;
51     }
52 
53     public String toString() {
54         return "Student{name = " + name + ", age = " + age + "}";
55     }
56 }

效果展示:

 5. 把线程不安全的集合转化为线程安全的集合

在未来多线程操作的时候,线程安全就会显得十分重要.

语法:

static <T> List<T> synchronizedList(List<T> list) :返回由指定列表支持的同步(线程安全)列表。 

举个例子:

 1 public class Test {
 2     public static void main(String[] args) {
 3         //生成无参集合
 4         ArrayList<Student> list=new ArrayList<>();
 5         //添加元素
 6         list.add(new Student("张三",18));
 7         list.add(new Student("李四",29));
 8         list.add(new Student("王五",15));
 9         list.add(new Student("老刘",30));
10         list.add(new Student("李华",20));
11       12         List<Student> students = Collections.synchronizedList(list);
13 14         for (Student student:students) {
15             System.out.println(student);
16         }
17 
18     }
19 }
20 class Student{
21     private String name;
22     private int age;
23 
24 
25     public Student() {
26     }
27 
28     public Student(String name, int age) {
29         this.name = name;
30         this.age = age;
31     }
32 
33     public String getName() {
34         return name;
35     }
36 
37     public void setName(String name) {
38         this.name = name;
39     }
40 
41     public int getAge() {
42         return age;
43     }
44 
45     public void setAge(int age) {
46         this.age = age;
47     }
48 
49     public String toString() {
50         return "Student{name = " + name + ", age = " + age + "}";
51     }
52 }

效果展示:

 多线程无法直接展示出来,需要学习到线程时才能完美的展示效果。

 

标签:name,age,list,Collections,Student,new,工具,public
From: https://www.cnblogs.com/gzyhrc/p/17843659.html

相关文章

  • 写了个追踪业务异常的工具,欢迎体验!
    基于java的注解处理器写了个自动植入业务追踪日志的工具,目前snapshot版本已上线,欢迎体验和提出意见,感谢! 原文档(建议直接阅读这个):LogTrace使用指南建议的版本号:jdk:8、9、10、11gradle:7+Part1:解决的问题本产品尝试解决以下场景的问题:假设现在有一块依赖了很多上下游服务......
  • 高效案例检索工具,Alpha案例库智慧检索成为律师检索工具首选
    “工欲善其事,必先利其器。”当今,律界同仁需要权衡的问题早已不是“要不要”使用法律科技,而是如何高质量、高效率地使用法律科技工具。在业内人士看来,随着人工智能技术的不断发展,法律行业科技化将成为不可逆转的趋势。从目前国内律所引入科技工具的现状来看,Alpha法律智能操作系统具......
  • 最适合程序员的画图工具!
    大家好,我是JavaPub!最近有小伙伴问我:有哪些比较适合程序员的画图工具,今天给大家推荐几款!如果你还用过不错的画图工具,可以评论区交流!1.zenflowchart虽然是英文,但其实也并没有多么复杂的内容,而且浏览器现在都带有页面翻译的功能,所以还是蛮方便的!初次使用需要注册,也并不难,随便自己的......
  • 微信wxid转换二维码微信号加好友工具,自动批量转码器免费分享,开源版哈收藏!
    wxid估计很多小伙伴都知道,就是属于那种没有设置了微信号的账号,它没有设置自己的微信号或者就显示了默认的ID值,这个ID值你是没办法通过微信的好友添加框去添加的,但是有一种办法可以实现这种效果,只需要用软件,安卓手机或者电脑都可以我这里分享的是电脑的源码,目前是2023年11月20号,这......
  • 分享一个 Docker 图形化工具 Portainer安装并实现远程访问
    Portainer是一个轻量级的容器管理工具,可以通过Web界面对Docker容器进行管理和监控。它提供了可视化的界面,使得用户可以更加方便地管理Docker容器、镜像、网络和数据卷等资源。下面介绍如何将本地Portainer管理界面结合cpolar内网穿透工具实现远程任意浏览器访问!远程访问......
  • 掌握迭代器:Python中的强大工具,让你轻松驾驭数据处理的巨轮
    今天,我们将深入探讨Python中的迭代器。迭代器是一种强大的工具,它使我们能够在不需要知道数据集的全部信息的情况下,逐个访问数据集中的每个元素。通过使用迭代器,我们可以逐个处理数据集中的每个元素,而不需要一次性加载整个数据集到内存中。这使得迭代器在处理大型数据集时特别有用。......
  • local-ses 方便本地测试aws ses 邮件服务的工具
    local-ses是基于nodejs开发的可以让我们本地就能测试awsses邮件服务的工具,官方提供了docker镜像可以快速使用说明云环境的本地测试很多时候还是比较重要的,一个是可以方便测试,还有就是节省成本localstack也是aws本地测试一个很不错的平台工具,act是一个githubaction本地......
  • 基于Wireshark插件的国密标准检测工具的设计与实现——任务理解与分工
    任务分工:应用和数据部分不可否认性的实现对任务的理解以下是我对任务的理解:任务背景:任务涉及到对用户进行身份验证和签名验证,以确保用户的关键操作行为是合法和安全的。用户1的操作:步骤23:正确给出√×*,这似乎是用户1的关键操作行为的一部分,需要验证其签名的合法性。步骤24......
  • 基于wireshark插件的国密标准检测工具的设计与实现前期安排
    任务理解:  整体任务:写.lua插件,其中创建的协议实现解析抓包数据并完成相关密评标准阶段安排:第一周:理解任务要求,学习相关知识,配置编程环境,分配工作学习笔记https://www.cnblogs.com/dkyzhouyikai/p/17841223.html  第二周:着手实现与检验  第三周:验收成员分工:......
  • 微信自动发朋友圈脚本,可定时延迟多账号,按键精灵开源工具
    这个需要每个手机运行一个,然后连接服务器,手机端是客户端,会检测客户端发送的消息,然后服务器端发送消息后,客户端会将消息转发到微信朋友圈。ui界面:  脚本代码:=====================================================Dim布局名称,点击坐标,话术,分割话术,随机值,文本,id,结......