java可以排序的集合类,java集合操作工具类,Java常用工具类—集合排序

java可以排序的集合类,java集合操作工具类,Java常用工具类—集合排序

本文主要介绍Java集合排序,通过实例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

一、集合排序概述

1、主要内容

对集合中的基本数据类型进行排序。

对集合中的字符串排序

比较器接口

可比接口

回顾:

//数组的排序

int[] arr={2,3,4,5,2,1 };

数组. sort(arr);

2、集合排序方法

使用Collections类的sort(List list)方法。

Sort(List list)是按照元素的自然顺序对指定的列表进行升序排序。

二、对基本数据类型和字符串类型进行排序

1、对基本数据类型排序

列表中只能存储对象。如果要存储基本数据类型,只能在泛型中编写它们对应的包装类。

导入Java . util . ArrayList;

导入Java . util . collections;

导入Java . util . list;

公共类IntSort {

公共静态void main(String[] args) {

//对存储在列表中的整形数据进行排序

list integer list=new ArrayListInteger();

list . add(5);

list . add(9);

list . add(3);

list . add(1);

System.out.println('排序前:');

for (int n: list) {

system . out . print(n ' ');

}

system . out . println();

//对列表中的数据进行排序

collections . sort(list);

System.out.println('排序后:');

for (int n: list) {

system . out . print(n ' ');

}

}

}

2、对字符串排序

集合中的字符串实际上是按照字符顺序和ASCII值顺序排序的。

导入Java . util . ArrayList;

导入Java . util . collections;

导入Java . util . list;

公共类StringSort {

公共静态void main(String[] args) {

//对存储在列表中的字符串进行排序。

ListString list=new ArrayList string();

list . add(' orange ');

list . add(' blue ');

list.add('黄色');

list . add(' gray ');

System.out.println('排序前:');

for (String str: list) {

system . out . print(str ' ');

}

system . out . println();

//对列表中的数据进行排序

collections . sort(list);

System.out.println('排序后:');

for (String str: list) {

system . out . print(str ' ');

}

//排序后,其实是按字母顺序。

}

}

三、Comparator接口

1、问题场景:

如何对自定义类进行排序?

2、解决方法:

使用可比或比较器接口。

3、Comparator接口介绍

强制将对象作为一个整体进行排序的比较函数。

您可以将比较器传递给排序方法(如Collections.sort或Arrays.sort)。

int compare(T o1,T o2)方法用于比较两个参数进行排序如果o1o2,则返回负整数如果o1==o2,则返回0如果o1o2,则返回正整数。

包含方法boolean equals(Object obj)是为了表明某个其他对象是否“等于”这个比较器。这个方法可以被Object类中的equals方法覆盖,所以它不必被覆盖。也就是说,我们只需要在比较器接口中重写compare方法。

4、对宠物猫进行排序

根据特定规则对自定义类别进行排序:

(1)按名字给宠物猫分类

类型字符串具有compareTo()方法。

示例:

int n=name 1 . con Pareto(name 2);

如果name1name2,则n为负整数,如果相等,则为0,否则为正整数。

如果名称1和名称2的位置发生变化,将按相反的顺序排序。

导入Java . util . comparator;

//按名称升序排列的比较器

公共类名Comparator实现ComparatorCat {

@覆盖

公共int比较(类别o1、类别o2) {

//按名称升序排序

string name 1=O1 . getname();

string name 2=O2 . getname();

int n=name 1 . compare to(name 2);

返回n;

}

}

语法格式:

Collections.sort(catList,new name comparator());

(2)按年龄降序排列宠物猫。

当调用compare方法大于0时,前一个数与下一个数交换,即把大的数放在后面,称为升序。如果第二个参数与第一个参数相反,则按降序排列。

按int类型比较,直接返回减法后的差。

导入Java . util . comparator;

//按年龄降序排列的比较器

公共类AgeComparator实现ComparatorCat {

@覆盖

公共int比较(类别o1、类别o2) {

int age 1=O1 . getmonth();

int age 2=O2 . getmonth();

返回age 2-age 1;

}

}

语法格式:

Collections.sort(catList,new age comparator());

四、Comparable接口

1、Comparable概述

可比接口位于Java.lang包下。

该接口强制实现其每个类的对象的整体排序。

这种排序叫做类的自然排序,类的compareTo方法叫做它的自然比较方法。

对于集合,通过调用Collection.sort方法对它们进行排序。

对于数组,通过调用Arrays.sort方法对它们进行排序。

Int compareTo(T o)方法:如果对象小于、等于或大于指定对象,则分别返回负整数、0或正整数。

2、对商品价格进行降序排序案例

(1)操作步骤

实现要排序的类的接口。

重写compareTo方法

直接调用Collections.sort()方法。

(2)代码实现

商品类别的定义

Class goods实现Comparable goods {//实现Comparable接口,并使用泛型来限定比较的类型。

私有字符串id;//商品编号

私有字符串名称;//商品名称

私人双倍价格;//商品价格

//构造方法

公共产品(){

}

公共商品(字符串id,字符串名称,双价格){

this . setid(id);

this.setName(名称);

this.setPrice(价格);

}

//getter和setter方法

公共字符串getId() {

返回id;

}

公共void setId(字符串id) {

this.id=id

}

公共字符串getName() {

返回名称;

}

public void setName(字符串名){

this.name=name

}

public double getPrice() {

退货价格;

}

公共无效定价(双倍价格){

this.price=价格;

}

@覆盖

公共字符串toString() {

退货'商品编号:' id ',商品名称:' name ',商品价格:' price;

}

@覆盖

public compareTo(goods o){//重写compare to方法。

//取出商品价格

double price 1=this . getprice();

double price 2=o . getprice();

int n=new Double(price2 - price1)。int value();//双精度型差值转换成int

返回n;

}

分拣步骤

collections . sort(goods list);

五、集合排序总结

比较器和可比接口之间的差异

1、Comparator:

位于java.util包中

在要比较的类之外实现接口。

调用sort方法时,指定比较器的实现类。

使用顺序:

实现接口进行排序。

实现比较器接口

试验

2、Comparable

位于java.lang包中

在要比较的类上实现接口。

调用排序方法时,只需指定集合名称即可。

使用顺序:

定义要比较的类并实现comparable接口。

试验

以上是边肖介绍的Java集合的详细讲解和集成。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: