java--对象比较器

java

  •       在实际的项目中,经常会遇到排序问题,对于基本数据类型java支持Arrays.sort()和Collection.sort()对集合进行排序,但是对用户自定义类型排序呢?java给我们提供了两种解决方案。

一:通过实现Comparable<Object> 在内部实现

示例代码:

package com.lky.model;

import java.io.Serializable;

@SuppressWarnings("serial")

public class Student implements Serializable, Comparable<Student> {

private String name;

private Integer id;

private String log;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getLog() {

return log;

}

public void setLog(String log) {

this.log = log;

}

@Override

public String toString() {

return "Student [name=" + name + ", >;

}

@Override

public int compareTo(Student o) {

return o.getId()-id;

}

}

二.通过实现 Comparator<Object> 来定义排序规则

示例代码:

package com.lky.test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import java.util.Random;

import org.junit.Test;

import com.lky.model.Student;

public class compartorTest {

public class OutComparator implements Comparator<Student> {

@Override

public int compare(Student o1, Student o2) {

int result = 0;

result = o1.getId() - o2.getId();

if (result == 0) {

return o1.getName().compareTo(o2.getName());

} else {

return result;

}

}

}

@Test

public void test() {

List<Student> array = new ArrayList<Student>();

for (int i = 0; i < 20; ++i) {

Student student = new Student();

student.setId(new Random().nextInt(10) + 1);

student.setLog("log" + i);

student.setName("lky" + i);

array.add(student);

}

Collections.sort(array);// 采用默认排序

// Collections.sort(array, new OutComparator());//采用自定义排序

for (Student student : array) {

System.out.println(student);

}

}

}

以上是 java--对象比较器 的全部内容, 来源链接: utcz.com/z/394577.html

回到顶部