package test;
import model.User;
import java.util.*;
public class ListTest {
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
list.add(new User("机器人一号","001"));
list.add(new User("机器人二号","001"));
list.add(new User("机器人三号","003"));
System.out.println("去重前=======================>");
for (User user:list) {
System.out.println("list : " + user.getUserName()+"\t"+user.getPassWord());
}
//==============================方法一==============================
List<User> mapList = listByHashMap(list);
System.out.println("方法一=======================>");
for (User user:mapList) {
System.out.println("mapList : " + user.getUserName()+"\t"+user.getPassWord());
}
//==============================方法二==============================
List<User> setList = listByHashSet(list);
System.out.println("方法二=======================>");
for (User user:setList) {
System.out.println("setList : " + user.getUserName()+"\t"+user.getPassWord());
}
//==============================方法三==============================
List<User> userList = listByTreeSet(list);
System.out.println("方法三=======================>");
for (User user:userList) {
System.out.println("setList : " + user.getUserName()+"\t"+user.getPassWord());
}
}
/**
* HashMap
* @param list
* @return
*/
public static List<User> listByHashMap(List<User> list){
//1.声明一个空的list
List<User> userList = new ArrayList<User>();
Map<String,String> map = new HashMap<String, String>();
//2.循环遍历要去重的list
for (User user:list){
//3.如果user为空,就跳出本次
if (user == null) continue;
//4.要去重的字段
String passWord = user.getPassWord();
if (passWord != null){
String value = map.get(passWord);
if (value == null){//如果map里没有这个key , 就插入
map.put(passWord,passWord);
userList.add(user);
}
}
}
map.clear();
return userList;
}
/**
* HashSet
* @param list
* @return
*/
public static List<User> listByHashSet(List<User> list){
//1.声明一个空的list
List<User> userList = new ArrayList<User>();
Set<String> set = new HashSet<String>();
//2.循环遍历要去重的list
for (User user:list){
//3.如果user为空,就跳出本次
if (user == null) continue;
//4.要去重的字段
String passWord = user.getPassWord();
if (passWord != null){
boolean contains = set.contains(passWord);
if (!contains){//如果map里没有这个key , 就插入
set.add(passWord);
userList.add(user);
}
}
}
set.clear();
return userList;
}
/**
* TreeSet
* @param list
* @return
*/
public static List<User> listByTreeSet(List<User> list){
Set<User> set = new TreeSet<User>(new Comparator<User>(){
@Override
public int compare(User user1, User user2) {
//字符串,则按照asicc码升序排列
//compareTo() 方法用于将 Number 对象与方法的参数进行比较.可用于比较Byte,Long,Integer等
//该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较
//相等 0;小于 -1;大于1
return user1.getPassWord().compareTo(user2.getPassWord());
}
});
set.addAll(list);
ArrayList<User> users = new ArrayList<>(set);
set.clear();
return users;
}
}
package model;
/**
* 实体类
*/
public class User {
private String userName;
private String passWord;
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;
}
public User() {
}
public User(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}
}