Java中如何实现类似C++结构体的二级排序

1:实现Comparable接口

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;





class User implements Comparable<User>{

	private Integer id;

	private String name;

	public int getId() {

		return id;

	}

	public void setId(int id) {

		this.id = id;

	}

	public String getName() {

		return name;

	}

	public void setName(String name) {

		this.name = name;

	}

	@Override

	public int compareTo(User o) {

		if (this.id == o.id) return this.name.compareTo(o.name);  //id相同按name排序

		else return this.id.compareTo(o.id); //按ID从小到大排序

	}

}



public class Main {



	/**

	 * @param args

	 */

	public static void main(String[] args) {

		// TODO Auto-generated method stub

		

		

		String s1 = "abx";

		String s2 = "小1";

		System.out.println(s1.compareTo(s2));

		

		

		List<User> users = new ArrayList<User>();

		

		User u6 = new User();

		u6.setId(6); u6.setName("Jack");

		

		

		User u = new User();

		u.setId(6); u.setName("abx");

		

		

		User u1 = new User();

		u1.setId(1); u1.setName("小1");

		

		

		User u4 = new User();

		u4.setId(4); u4.setName("小4");

		

		

		User u2 = new User();

		u2.setId(2); u2.setName("小2");

		

		User u7 = new User();

		u7.setId(6); u7.setName("abc");

		

		users.add(u2);

		users.add(u6);

		users.add(u4);

		users.add(u1);

		users.add(u);

		users.add(u7);

		Collections.sort(users);

		

		for (User ui : users) {

			System.out.println(ui.getId() + " " + ui.getName());

		}

	}



}

  

2:集合外定义Comparator

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;





class User{

	private int id;

	private String name;

	public int getId() {

		return id;

	}

	public void setId(int id) {

		this.id = id;

	}

	public String getName() {

		return name;

	}

	public void setName(String name) {

		this.name = name;

	}

}



public class Main {



	/**

	 * @param args

	 */

	public static void main(String[] args) {

		// TODO Auto-generated method stub

		

		

		String s1 = "abx";

		String s2 = "小1";

		System.out.println(s1.compareTo(s2));

		

		

		List<User> users = new ArrayList<User>();

		

		User u6 = new User();

		u6.setId(6); u6.setName("Jack");

		

		

		User u = new User();

		u.setId(6); u.setName("abx");

		

		

		User u1 = new User();

		u1.setId(1); u1.setName("小1");

		

		

		User u4 = new User();

		u4.setId(4); u4.setName("小4");

		

		

		User u2 = new User();

		u2.setId(2); u2.setName("小2");

		

		User u7 = new User();

		u7.setId(6); u7.setName("abc");

		

		users.add(u2);

		users.add(u6);

		users.add(u4);

		users.add(u1);

		users.add(u);

		users.add(u7);

		

		Collections.sort(users, new Comparator<User>() {

			@Override

			public int compare(User o1, User o2) {

				if (o1.getId() == o2.getId()) return o1.getName().compareTo(o2.getName());

				return o1.getId() > o2.getId() ? 1 : -1;

			}

			

		});

		

		for (User ui : users) {

			System.out.println(ui.getId() + " " + ui.getName());

		}

	}



}

  

 

 

你可能感兴趣的:(java)