Java 集合排序--List
程序员文章站
2022-06-10 22:24:17
...
目录
Java 集合排序--List
1、泛型中的数据类型不能使用基本数据类型要使用包装类,因为list不同与数组,参数是Object类型,都是对象(再集合类后面添加<>就是泛型,用于规定该集合中存储的类型) 2、集合中使用了泛型统一,则输出时候可以用for-each循环
2.List与Set集合进行排序使用的是:Collectionss.sort( [Set or List] )来对元素进行排序的,数值型数据排序是按照其自然顺序进行升序排序,字符串是按照其首字母对应的ASCII码值进行排序的。
对整形排序
对字符串排序
对自定义的类排序
Comparator接口
*强行对某个对象进行整体排序的比较函数
*可以将Comparator传递给sort方法(如 Collections.sort或Arrays.sort) 方法
*int compare(T O1,T O2) 比较用来排序的两个参数。
-如果o1<o2,返回负整数
-如果o1==o2,返回0
-如果o1>o2,返回正整数
*boolean equals(Object odj)指示某个其他对象是否“等于”此 Comparator
此方法可以被Object类中的equals方法覆盖,不必重写。
例程
按名字升序排序:
//实现Comparator接口
按名字降序排序:
//实现Comparator接口
只需要改:int n= name2.compareTo(name1);
按年龄降序排序
//实现Comparator接口
例程源码:
package com.imooc.sort;
public class Cat {
private String name; //名字
private int month; //年龄
private String species;//品种
//构造方法
public Cat(String name, int month, String species) {
super();
this.name = name;
this.month = month;
this.species = species;
}
//getter与setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public String getSpecies() {
return species;
}
public void setSpecies(String species) {
this.species = species;
}
@Override
public String toString() {
return "[名字:" + name + ", 年龄:" + month + ", 品种:" + species + "]";
}
}
package com.imooc.sort;
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;
}
}
package com.imooc.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CatTest {
public static void main(String[] args) {
// 按名字升序排序
Cat huahua=new Cat("huahua",5,"英国短毛猫");
Cat fanfan=new Cat("fanfan",2,"中华田园猫");
Cat maomao=new Cat("maomao",3,"中华田园猫");
List<Cat> catList=new ArrayList<Cat>();
catList.add(huahua);
catList.add(fanfan);
catList.add(maomao);
//排序前
System.out.println("排序前:");
for(Cat cat:catList){
System.out.println(cat);
}
//按名字进行升序排序
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);
}
}
}
例题
上一篇: 对女生表白的话 如何说的有技巧
下一篇: 剩女出现难嫁的因素有哪些呢?