热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java集合工具类_Java集合中Collections工具类总结

Collections工具类Collections是一个操作Collection(Set、List)和Map等集合的工具类Collection和Collections的区别

Collections工具类

Collections 是一个操作 Collection(Set、 List )和 Map 等集合的工具类

Collection和Collections的区别?

Collection是用来存储单列数据的集合接口,常用子接口有List和Set

Collections是操作Collection的工具类。

常用方法

排序操作:

reverse(List): 反转 List 中元素的顺序

shuffle(List): 对 List 集合元素进行随机排序

sort(List): 根据元素的自然顺序对指定 List 集合元素按升序排序

sort(List, Comparator): 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序

swap(List, int, int): 将指定 list 集合中的 i 处元素和 j 处元素进行交换

查找和替换:

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

Object max(Collection, Comparator): 根据 Comparator 指定的顺序,返回给定集合中的最大元素

Object min(Collection)

Object min(Collection, Comparator)

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

void copy(List dest,List src):将src中的内容复制到dest中

boolean replaceAll(List list, Object oldVal, Object newVal): 使用新值替换List 对象的所有旧值

举例:

reverse反转方法

@Test

public void test3() {

// 测试reverse方法

List list = new ArrayList();

list.add(2121);

list.add(-1);

list.add(21);

list.add(0);

list.add(45);

//反转

Collections.reverse(list);

System.out.println(list);//[45, 0, 21, -1, 2121]

}

sort方法

@Test

public void test2() {

// 测试sort方法

List list = new ArrayList();

list.add(2121);

list.add(-1);

list.add(21);

list.add(0);

list.add(45);

//按升序排序

Collections.sort(list);

System.out.println(list);//[-1, 0, 21, 45, 2121]

}

逆序排序

int compareTo(T t)方法说明

定义:比较此对象与指定对象的顺序

返回:负整数、零或正整数。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

@Test

public void test1() {

// 测试sort方法

List list = new ArrayList();

list.add(2121);

list.add(-1);

list.add(21);

list.add(0);

list.add(45);

// 降序

Collections.sort(list, new Comparator() {

@Override

public int compare(Integer o1, Integer o2) {

System.out.println(o2 - o1);

return o2 - o1; // 此时o2-o1是大于0的

}

});

System.out.println(list);//[-1, 0, 21, 45, 2121]

}

对自定义对象的排序

方法一:通过实现Comprable的compareTo方法进行排序

// 实现Comparable接口

class User implements Comparable {

private String name;

private Integer age;

public User(String name, Integer age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public int compareTo(User o) {

//首先比较年龄,如果年龄相同,则比较名字

int flag = this.getAge().compareTo(o.getAge());

if (flag == 0) {

return this.getName().compareTo(o.getName());

} else {

return flag;

}

}

@Override

public String toString() {

return "User{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

测试方法

// 自定义对象的排序,比如对User对象按照年龄排序,再按照name排序

@Test

public void testSort() {

User f1 = new User("tony", 19);

User f2 = new User("jack", 16);

User f3 = new User("tom", 80);

User f4 = new User("jbson", 44);

User f5 = new User("jason", 44);

User f6 = new User("tom", 12);

List list = new ArrayList();

list.add(f1);

list.add(f3);

list.add(f4);

list.add(f2);

list.add(f5);

list.add(f6);

Collections.sort(list);

for (User o : list) {

System.out.println(o.getAge() + "-->" + o.getName());

}

}

输出:

12-->tom

16-->jack

19-->tony

44-->jason

44-->jbson

80-->tom

copy方法

List dest = Arrays.asList(new Object[list.size()]);

@Test

public void testCopy(){

List list = new ArrayList();

list.add(2121);

list.add(-1);

list.add(21);

list.add(0);

list.add(45);

//错误写法:此时dest集合为长度为0,报错IndexOutOfBoundsException: Source does not fit in dest

// List dest = new ArrayList();

// Collections.copy(dest,list);

// System.out.println(dest.size());

// System.out.println(dest);

// 正确写法:先造一个值为null,长度为list长度的集合。再拷贝

List dest = Arrays.asList(new Object[list.size()]);

System.out.println(dest.size()); // 5

Collections.copy(dest,list);

System.out.println(dest);

}



推荐阅读
  • 探讨 javax.jms.JMSException 中 getLocalizedMessage 方法的应用与实例代码分析 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
  • Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。 ... [详细]
  • 深入解析Android中图像资源的内存占用问题及其优化策略
    在Android开发过程中,图像资源的内存占用是一个值得关注的问题。本文将探讨图像内存占用与哪些因素相关,包括设备性能的影响,并提供一系列优化策略,帮助开发者有效管理图像资源,提升应用性能。 ... [详细]
  • 利用Java开发百度图片爬虫,实现高效下载功能
    为了满足大量图像素材的需求以支持机器学习项目,本文介绍了一种基于Java语言开发的百度图片爬虫工具,该工具能够高效地抓取并下载百度图片中的资源。文章首先展示了爬虫运行的效果图,并详细阐述了其工作原理和技术实现路径,重点解析了如何通过分析百度图片的网页结构来实现精准抓取。此外,还讨论了在实际应用中可能遇到的问题及解决方案。 ... [详细]
  • 本文介绍了在 Android Studio 中如何实现带有侧滑菜单功能的 ListView 控件——SwipeMenuListView。通过详细说明其基本使用方法和配置步骤,帮助开发者快速集成这一功能。具体包括在项目中添加必要的依赖项,并进行相应的布局和代码设置,以实现流畅的侧滑菜单效果。 ... [详细]
  • Oracle培训(三十七)——深入解析Hibernate第三章:实体关联关系映射详解
    在本节Oracle培训中,我们将深入探讨Hibernate第三章的内容,重点讲解实体关联关系映射的详细知识点。首先,回顾了Hibernate的基本概念和映射基础,随后详细分析了不同类型的实体关联关系,包括一对一、一对多和多对多关系的映射方法及其应用场景。通过具体的示例和代码片段,帮助读者更好地理解和掌握这些复杂的映射技术。此外,还讨论了如何优化关联关系的性能,以及常见的问题和解决方案。 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • OpenCV 2.4.9 源码解析:级联分类器的错误率与尺寸分析 ... [详细]
  • RestTemplate的使用技巧与最佳实践
    在本文中,我们将探讨如何高效地使用 `RestTemplate` 并分享一些最佳实践。首先,我们创建了两个 Spring Boot 项目,分别为 A 项目(端口 8080)和 B 项目(端口 8081)。接下来,我们在 A 项目中配置了必要的设置,包括创建配置文件和导入相关依赖,以确保 `RestTemplate` 能够顺利调用 B 项目的 API。通过这些步骤,我们展示了如何在实际项目中有效地集成和使用 `RestTemplate`。 ... [详细]
  • 通过Apache Commons FileUpload组件,可以根据具体应用需求实现多样化的文件上传功能。在基本应用场景中,开发者可以通过调用单一方法来解析Servlet请求,从而轻松处理文件上传任务。此外,该组件还提供了丰富的配置选项和高级功能,支持大文件上传、多文件并发处理等复杂场景,显著提升了文件上传的效率和可靠性。 ... [详细]
  • 在 `index.aspx.cs` 中,我实现了从数据库读取数据的功能,具体代码如下:`int id1 = myReader.GetInt32(0); string id2 = myReader.GetString(2);` 但目前遇到了一些问题,特别是在处理 `id2` 字段时。希望得到关于如何优化数据库操作和解决当前问题的专业指导。 ... [详细]
  • 在本文中,我们将深入探讨Android数据库操作中的表清理及CRUD(创建、读取、更新、删除)功能。具体涉及表结构的设计,包括字段如 `store_id`、`store_name`、`store_area_id` 和 `store_area_name` 等,并详细讲解如何通过SQL语句实现这些操作,以提高数据管理的效率和准确性。此外,我们还将讨论如何优化数据库性能,确保应用在处理大量数据时仍能保持流畅运行。 ... [详细]
  • 本文深入解析了Java编译过程,重点探讨了从源代码到字节码文件的转换机制。通过具体示例,如 `Hello.java` 的编译与反编译过程,详细介绍了 `javap -verbose` 命令的使用方法及其在字节码分析中的重要作用。此外,文章还讨论了字节码文件的结构特点及其在不同应用场景中的实际应用,为开发者提供了宝贵的参考。 ... [详细]
author-avatar
cathy李lee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有