使用比较器实现list排序
来源:互联网 发布:男发型设计软件下载 编辑:程序博客网 时间:2024/06/06 08:56
主要代码:
List<String> list = new ArrayList();list.add("刘媛媛");
list.add("王硕");
list.add("李明");
list.add("刘迪");
list.add("刘布");
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i));
}
输出结果:
李明刘布刘迪刘媛媛王硕
2自定义排序规则
(1)model类实现Comparable接口,重写int compareTo(Object o)方法
model类:
public class StudentDTO implements Comparable
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ObjType getType()
{
return type;
}
public void setAge(int age)
{
this.age= age;
}
@Override
public int compareTo(Object o)
{
StudentDTO sdto = (StudentDTO)o;
int otherAge = sdto.getAge();
// note: enum-type's comparation depend on types' list order of enum method
// so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
return this.age.compareTo(otherAge);
}
}
主方法:
public static void main(String[] args)
{
List<StudentDTO> studentList = new ArrayList();
StudentDTO s1 = new StudentDTO ();
s.setName("yuanyuan");
s.setAge(22);
studentList.add(s1);
StudentDTO s1 = new StudentDTO ();
s.setName("lily");
s.setAge(23);
studentList.add(s2);
Collections.sort(studentList); //按照age升序 22,23,
//降序的再调用一次反转(Reverse)
Collections.reverse(studentList);//23,22
}
降序的另一种实现是直接修改compareTo实现比如升序的时候
return this.age.compareTo(otherAge);
降序则反过来即可
retrun otherAge.compareTo(this.age);
3,新创建一个比较器类实现Comparator接口,重写int compare(Object o1, Object o2)方法;
model类:
public class StudentDTO implements Comparable
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ObjType getType()
{
return type;
}
public void setAge(int age)
{
this.age= age;
}
}
比较器类:
class MyCompartor implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
StudentDTO sdto1= (StudentDTO )o1;
StudentDTO sdto2= (StudentDTO )o2;
return sdto1.getAge.compareTo(stdo2.getAge())
}
}
主方法:
public static void main(String[] args)
{
List<StudentDTO> studentList = new ArrayList();
StudentDTO s1 = new StudentDTO ();
s.setName("yuanyuan");
s.setAge(22);
studentList.add(s1);
StudentDTO s1 = new StudentDTO ();
s.setName("lily");
s.setAge(23);
studentList.add(s2);
MyComparetor mc = new MyComparetor();
Collections.sort(studentList,mc); //按照age升序 22,23,
Collections.reverse(studentList,mc); //按照age降序 23,22
}
升序降序实现方法可参照第二种方式。同样有两种实现方式。- 使用比较器实现list排序
- List集合数据排序使用比较器
- 利用比较接口实现List中的对象排序
- java对list集合使用comparator方法比较排序
- Java比较器给List中的对象排序
- Java 8 比较器:如何对 List 排序
- Java 8 比较器:如何对 List 排序
- 实现List<>自定义排序
- List/ArrayList 排序实现
- Comparator实现List排序
- 利用比较器接口实现类排序
- Java自定义比较器实现中文排序
- 更改比较器实现自定义字符串排序
- 使用Collections.sort()实现List正反排序的方法
- List排序的使用
- List排序的使用
- sort(List<T> list, Comparator<? super T> c) 根据比较器产生的顺序排序
- TreeSet 使用指定比较器进行排序
- SmartImageView
- Linux下chkconfig命令详解
- 强大的Spring缓存技术(中)
- Promise.prototype.then()和Promise.prototype.catch()
- 旋转数组的最小数字
- 使用比较器实现list排序
- 强大的Spring缓存技术(下)
- 使用js将img转换为base64
- SODBASE数据输出适配器----HTTP请求
- JSON解析的几种方式
- C# 中文字符比较 or C#汉字比较 or C# 中文字符串比较 or C#中文名字比较
- Redis学习笔记(六)redis实现分布式锁
- 全球30米地表覆盖遥感制图关键技术与产品研发
- SET TIMING ON