您的位置:首页 > 编程语言 > Java开发

JAVA中的集合排序

2018-02-21 16:32 260 查看
版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~

http://blog.csdn.net/xiaoduan_/article/details/79343240

JAVA集合排序

基本类型和字符串类型排序

基本类型和字符串类型排序直接调用

Collections.sort(list);
根据元素的自然顺序对指定列表按升序进行排序

+ 对存储在List中的整型数据进行排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class IntSort {

public static void main(String[] args) {
// 对存储在List中的整型数据进行排序
List<Integer> list=new ArrayList<Integer>();
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();
//对List中的数据进行排序
Collections.sort(list);
System.out.println("排序后:");
for(int n:list){
System.out.print(n+"    ");
}
}
}


对存放在List中的字符串进行排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StringSort {

public static void main(String[] args) {
// 对存放在List中的字符串进行排序
List<String> list=new ArrayList<String>();
list.add("orange");
list.add("blue");
list.add("yellow");
list.add("gray");
System.out.println("排序前:");
for(String s:list){
System.out.print(s+"   ");
}
System.out.println();
Collections.sort(list);
System.out.println("排序后:");
for(String s:list){
System.out.print(s+"   ");
}
}
}


自定义类型排序

使用Comparable和Comparator接口

Comparator接口

强行对某个对象进行自定义排序的函数

可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort)

**int compare(T o1, T o2) 比较用来排序的两个参数。 如果o1

1. 单独定义比较类,实现Comparator接口

按照名字比较

import java.util.Comparator;

public class NameComparator implements Comparator<Cat> {

@Override
public int compare(Cat o1, Cat o2) {
// 按名字升序排序
String name1=o1.getName();
String name2=o2.getName();
int n=name1.compareTo(name2);//比较方法
return n;
}

}


按年龄比较

import java.util.Comparator;

public class AgeComparator implements Comparator<Cat>{

@Override
public int compare(Cat o1, Cat o2) {
// 按年龄降序排序
int age1=o1.getMonth();
int age2=o2.getMonth();
return age2-age1;
}

}


2. 在排序的时候传入比较的策略

//按名字进行升序排序
Collections.sort(catList, new NameComparator());
System.out.println("按名字升序排序后:");
for(Cat cat:catList){
System.out.println(cat);
}
//按年龄进行降序排序
Collections.sort(catList, new AgeComparator());
System.out.println("按年龄降序排序后:");
for(Cat cat:catList){
System.out.println(cat);
}


Comparable接口

此接口强行对实现它的每个类的对象进行整体排序。

这种排序被称为类的自然排序,类的 compareTo 方法被称为它

的自然比较方法。

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

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

int compareTo(T o)方法 :该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数

在构建类的时候,在要比较的类中重写 int compareTo()方法

@Override
public int compareTo(Goods o) {
// 取出商品价格
double price1=this.getPrice();
double price2=o.getPrice();
int n=new Double(price2-price1).intValue();//降序排列
return n;
}


Comparator接口与Comparable接口的区别

ComparatorComparable
位于java.util包位于java.long包
在要比较的类的外部实现该接口,比较灵活,可以自定义多中比较策略,并且在排序的时候按需选择在要比较的类上实现该接口,只能定义一种排序策略
调用sort方法时,要指定Cmoparator的 实现类调用sort方法时,只需指定集合名即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  集合