Collections.sort方法使用

Collections.sort(List<T> list)使用:
list中的所有元素都必须实现 Comparable 接口
User.java
package sc.zdd.test;

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

public class User{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

public User(String name, int age) {

this.name = name;
this.age = age;
}

public User() {

}
@Override
public String toString() {
return "User [age=" + age + ", name=" + name + "]";
}
public int compareTo(User o) {
//TODO Auto-generated method stub
//int result = name.compareTo(o.getName());
//if(result==0){
// result = age -o.getAge();
//}
//System.out.println(result);
//return result;
return this.hashCode()-o.hashCode();
}

public static void main(String[] args){
List<User> list = new ArrayList<User>();
list.add(new User("aa",10));
list.add(new User("aa",20));
list.add(new User("bb",10));
list.add(new User("bb",20));
list.add(new User("aa",1000));
list.add(new User("aa",5000));
for(User u1:list){
System.out.println(u1);
}
Collections.sort(list);
System.out.println("----------排序后------------");
for(User u1:list){
System.out.println(u1);
}

}

}
在这里的User类实现了Comparable 接口,并重写了hashCode() 和equalse()方法,这点是毕要的.

Collections.sort(List<T> list,Comparator<? super T> c)使用

UserComparator.java

package sc.zdd.test;

import java.util.Comparator;

public class UserComparator  implements Comparator<User>{

@Override
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
return o1.hashCode()-o2.hashCode();
}

}

Test.java
package sc.zdd.test;

package sc.zdd.test;

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

public class Test{

public static void main(String[] args){
List<User> list = new ArrayList<User>();
list.add(new User("aa",10));
list.add(new User("aa",20));
list.add(new User("bb",10));
list.add(new User("bb",20));
list.add(new User("aa",1000));
list.add(new User("aa",5000));
for(User u1:list){
System.out.println(u1);
}
Collections.sort(list,new UserComparator());
System.out.println("----------------------");
for(User u1:list){
System.out.println(u1);
}

}

}

你可能感兴趣的:(java)