java之集合工具类Collections
Collections类简介
java.utils.Collections 是集合工具类,用来对集合进行操作。此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。
常用方法
- public static boolean addAll(Collection c, T... elements) :往集合中添加一些元素。
- public static void shuffle(List list) 打乱顺序 :打乱集合顺序。
代码举例
package demo03Collections;
import java.util.ArrayList;
import java.util.Collections;
public class Demo01Collections {
public static void main(String[] args) {
//定义测试用的集合
ArrayList<Integer> arrayList = new ArrayList<>();
//addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
Collections.addAll(arrayList, 1, 2, 3, 4, 5);
//查看集合中的元素顺序
System.out.println(arrayList);//[1, 2, 3, 4, 5]
//shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
Collections.shuffle(arrayList);
//查看集合中的元素顺序
System.out.println(arrayList);//[5, 1, 4, 3, 2]
}
}
集合排序
- public static void sort(List list) :将集合中元素按照默认规则排序。默认规则就是升序
代码举例
package demo03Collections;
import java.util.ArrayList;
import java.util.Collections;
public class Demo02Collections {
public static void main(String[] args) {
//定义测试用的集合
ArrayList<Integer> arrayList = new ArrayList<>();
//addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
Collections.addAll(arrayList, 1, 3, 2, 5, 4);
System.out.println(arrayList);//[1, 3, 2, 5, 4]
//sort(List list) :将集合中元素按照默认规则排序。默认规则就是升序。
Collections.sort(arrayList);
System.out.println(arrayList);//[1, 2, 3, 4, 5]
}
}
自定义类型进行排序
- 方式1: public static void sort(List list ) :实现Comparable,重写接口中的方法compareTo定义排序的规则。 Comparable接口的排序规则:自己(this)-参数:升序
@Override
public int compareTo(Student o) {
//自定义比较的规则,比较两个人的年龄(this,参数Student)
//return this.getAge() - o.getAge();//年龄升序排序
return this.getAge() - o.getAge();
}
}
- 方式2: public static void sort(List list,Comparator ) :将集合中元素按照指定规则排序。Comparator这个接口,位于位于java.util包下,排序是comparator能实现的功能之一,该接口代表一个比较器,比 较器具有可比性!顾名思义就是做排序的,通俗地讲需要比较两个对象谁排在前谁排在后,那么比较的方法就是: public int compare(String o1, String o2) :比较其两个参数的顺序。 两个对象比较的结果有三种:大于,等于,小于。如果要按照升序排序, 则o1 小于o2,返回(负数),相等返回0,01大于02返回(正数)如果要按照 降序排序 则o1 小于o2,返回(正数),相等返回0,01大于02返回(负数)
ollections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 年龄降序
int result = o2.getAge()‐o1.getAge();//年龄降序
if(result==0){//第一个规则判断完了 下一个规则 姓名的首字母 升序
result = o1.getName().charAt(0)‐o2.getName().charAt(0);
}
return result;
}
});
简述Comparable和Comparator两个接口的区别
Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法 被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现 此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中 的键或有序集合中的元素,无需指定比较器。
- Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或 有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序。
简而言之:
Comparator和Comparable的区别
- Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
- Comparator:相当于找一个第三方的裁判,比较两个
java之集合工具类Collections的更多相关文章
- java的集合工具类Collections
集合框架的工具类. Collections:集合框架的工具类.里面定义的都是静态方法. Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面 ...
- Java:集合工具类-Collections
Java.util.Collections 集合框架工具类Collections,其方法都是静态的,本身没有构造函数. 常见方法: static <T extends Comparable< ...
- Java从零开始学二十四(集合工具类Collections)
一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...
- Java笔记(二十四)……集合工具类Collections&Arrays
Collections 集合框架的工具类,方法全部为静态 Collections与Collection的区别 Collection是集合框架的一个顶层接口,里面定义了单列集合的共性方法 Collect ...
- Java常用类(五)之集合工具类Collections
前言 Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作, 还提供了将集合对象置为不可变.对集合对象实现同步控 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:集合工具类Collections
import java.util.Collections ; import java.util.List ; import java.util.Set ; public class Collectio ...
- [黑马程序员] 集合框架2——Map系 & 集合工具类(Collections、Arrays)
---------------------- ASP.Net+Android+IO开发..Net培训.期待与您交流! ---------------------- 0. 集合框架按其所实现的接口, 大 ...
- Java 集合工具类---------- Collections类
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
随机推荐
- C# 利用反射更改父类公开对象
需求 : 有一个保存数据库字段的基础类,现在要加个状态返回给前端,但是又不能改基础类: class BaseA { public string Name { get; set; } } class A ...
- 【Web技术】281- 滴滴开源小程序框架 Mpx2.0
滴滴Mpx框架负责人@hiyuki,滴滴出行网约车webapp乘客团队的负责人,也是滴滴开源的小程序框架Mpx的负责人和核心作者 Mpx是一款致力于提高小程序开发体验和效率的增强型小程序框架,目前在滴 ...
- httpBasic 认证的URL访问
httpBasic 认证 要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法: 1.在请求头中添加Authorization: Authorizati ...
- Spring与Shiro整合 加载权限表达式
Spring与Shiro整合 加载权限表达式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 如何加载权限表达式 我们在上章内容中画了一张图,里面有三个分项,用户 角色 权限: 那 ...
- textarea增加字数监听且高度自适应(兼容IE8)
1.封装方法: var textareaListener = { /*事件监听器兼容 * *attachEvent——兼容:IE7.IE8:不兼容firefox.chrome.IE9.IE10.IE1 ...
- CCF-CSP题解 201812-3 CIDR合并
题目想求与给定前缀列表等价的包含IP前缀数目最少的前缀列表. 首先是怎么存储前缀列表.用一个long long存储IP地址,再存一个前缀长度,封装在一个结构体里\(<ipNum, len> ...
- ajax添加请求头(添加Authorization字段)
我们在发AJAX请求的时候可能会需要自定义请求头,在jQuery的$.ajax()方法中提供了beforeSend属性方便我们进行此操作. beforeSend: function(request) ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商
现在,当谈论起 RESTful Web API 的时候,人们总会想到 JSON.但是实际上,JSON 和 RESTful API 没有半毛钱关系,只不过 JSON 恰好是RESTful API 结果的 ...
- Supermap/Cesium 开发心得----动态散点图(波纹点/涟漪点)
在二维开发中,openlayers4 入门开发系列结合 echarts4 实现散点图,下图是GIS之家的效果图,那么在三维中,则可借助Entity来变相构造下图的效果. 思路: 构造实体ellipse ...
- docker网络配置
Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需 ...