public class ListDistinct <T>{
/**
* 通过set去重, 不打乱原有list的顺序
* list中相同的对象会被去重复
*
* @param List<T> list
* @return List<T>
* */
public List<T> distinctBySetOrder(List<T> list){
Set<T> set = new HashSet<T>();
List<T> newList = new ArrayList<T>();
for (T t :list) {
if(set.add(t)){
newList.add(t);
}
}
return newList;
}
/**
* 通过set去重, 顺序可能会乱
* list中相同的对象会被去重复
*
* @param List<T> list
* @return List<T>
* */
public List<T> distinctBySet(List<T> list){
return new ArrayList<T>(new HashSet<T>(list));
}
/**
* 通过遍历判断后将赋予新的集合
*
* @param List<T>
* @reutrn List<T>
* */
public List<T> distinctByANewList(List<T> list){
List<T> newList = new ArrayList<T>();
for(T t : list){
if(!newList.contains(t)){
newList.add(t);
}
}
return newList;
}
public static void main(String[] args){
ListDistinct<String> ld = new ListDistinct<String>();
List<String> list = new ArrayList<String>();
list.add("zhang");
list.add("zhang");
list.add("ss");
list.add("ss");
list.add("2s");
list.add("s3");
System.out.println("1:" + ld.distinctBySetOrder(list).toString());
System.out.println("2:" + ld.distinctBySet(list).toString());
System.out.println("3:" + ld.distinctByANewList(list).toString());
}
}
java list集合三种去重方法
最新推荐文章于 2024-07-06 02:46:57 发布