List基础操作

一、List排序

1、基础类型的List排序

/**
	 * 对简单的List排序
	 * 
	 * 简单常量组成的List,可以直接使用Collections.sort排序
	 */
	@Test
	public void listSort() {
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(0);
		list.add(4);
		list.add(2);
		list.add(9);
		Collections.sort(list);
		System.out.println(list);
	}

输出:[0, 1, 2, 4, 9]

对简单类型的List排序,只需要调用sort方法即可,List将按照字典顺序排序。

2、对复杂类型的List排序(实现Comparator接口)

    ①实现Comparator排序

public class User{
	
	private int id;
	
	private String username;
	
	private String password;
	
	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
}

使用Comparator对User对象的List排序:

/**
	 * 对复杂的对象排序
	 */
	@Test
	public void listSort2() {
		List<User> list = new ArrayList<User>();
		User user1 = new User(1,"哈哈","haha");
		User user2 = new User(5,"呵呵","hehe");
		User user3 = new User(2,"嘻嘻","xixi");
		User user4 = new User(9,"嘿嘿","heihei");
		list.add(user1);
		list.add(user2);
		list.add(user3);
		list.add(user4);
		Collections.sort(list, new Comparator<User>() {
			@Override
			public int compare(User o1, User o2) {
				if(o1.getId() > o2.getId()) {
					return 1;
				}else if(o1.getId() == o2.getId()) {
					return 0;
				}else {
					return -1;
				}
			}
		});
		System.out.println(list);
	}

或者:

/**
	 * 创建Comparator来实现排序
	 */
	@Test
	public void listSort3() {
		Comparator<User> com = new Comparator<User>() {
			@Override
			public int compare(User o1, User o2) {
				if(o1.getId() > o2.getId()) {
					return 1;
				}else if(o1.getId() < o2.getId()) {
					return -1;
				}else {
					return 0;
				}
			}
		};
		
		List<User> list = new ArrayList<User>();
		User user1 = new User(1,"哈哈","haha");
		User user2 = new User(5,"呵呵","hehe");
		User user3 = new User(2,"嘻嘻","xixi");
		User user4 = new User(9,"嘿嘿","heihei");
		list.add(user1);
		list.add(user2);
		list.add(user3);
		list.add(user4);
		list.sort(com);
		System.out.println(list);
	}

3、对复杂类型的List排序(实现Comparable接口)

public class User implements Comparable<User>{
	
	private int id;
	
	private String username;
	
	private String password;
	
	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}

	@Override
	public int compareTo(User o) {
		if(this.getId() > o.getId()) {
			return 1;
		}else if(this.getId() < o.getId()) {
			return -1;
		}else {
			return 0;
		}
	}
}
/**
	     * User实现 Comparable 接口
	 */
	@Test
	public void listSort4() {
		List<User> list = new ArrayList<User>();
		User user1 = new User(1,"哈哈","haha");
		User user2 = new User(5,"呵呵","hehe");
		User user3 = new User(2,"嘻嘻","xixi");
		User user4 = new User(9,"嘿嘿","heihei");
		list.add(user1);
		list.add(user2);
		list.add(user3);
		list.add(user4);
		Collections.sort(list);
		System.out.println(list);
	}

二、List的深拷贝

猜你喜欢

转载自blog.csdn.net/u013441805/article/details/81182319
今日推荐