List、Set的相同點(diǎn)和區(qū)別
List和Set繼承了Collection接口。
List以特定索引來存取元素,可以有重復(fù)元素。Set不能存放重復(fù)元素(用對象的equals()方法來區(qū)分元素是否重復(fù))。
TreeSet的排序?qū)崿F(xiàn):
package com.example.demo.model;
/**
* @author AxeLai
* @date 2019-04-22 18:47
*/
public class User implements Comparable<User> {
/**
* 編號
*/
private int id;
/**
* 姓名
*/
private String name;
/**
* 年齡
*/
private String sex;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
@Override
public int compareTo(User user) {
//升序排序
return this.id - user.id;
//降序排序
//return this.age - o.age;
}
}
Set<User> userList = new TreeSet<>();
userList.add(new User(1,"小李","男"));
userList.add(new User(5,"小李","男"));
userList.add(new User(7,"小李","男"));
userList.add(new User(3,"小李","男"));
for (User user:userList) {
System.out.println(user.getId());
}
ArraList的排序:
比較的對象類
package com.example.demo.model;
/**
* @author AxeLai
* @date 2019-04-22 18:47
*/
public class User {
/** 編號 */
private int id;
/** 姓名 */
private String name;
/** 年齡 */
private String sex;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
}
比較的實(shí)現(xiàn)方法
private static void sortList() {
List<User>userList = new ArrayList<>();
userList.add(new User(1,"小李1","男"));
userList.add(new User(5,"小李2","男"));
userList.add(new User(7,"小李3","女"));
userList.add(new User(3,"小李4","男"));
//通過sort方法的第二個(gè)參數(shù)傳入一個(gè)Comparator接口對象 相當(dāng)于是傳入一個(gè)比較對象大小的算法到sort方法中
Collections.sort(userList,new Comparator<User>() {
@Override
public int compare(User user0, User user1) {
//降序排序
return user1.getId()-user0.getId();
}
});
for (User user:userList) {
System.out.println(user.getId());
}
}