概述
1.情况1,对于基础变量,采用set方式进行处理,demo:
public List<String> hitZongBao(List<String> hitRules) {
Set<String> result = new HashSet<>();
hitRules.forEach(hitRule -> {
result.add(hitRule);
});
return new ArrayList<>(result);
}
2.对于list中是对象的情况:
public List<Tag> hitZongBao(List<Tag> hitRules) {
Set<Tag> result = new HashSet<>();
hitRules.forEach(hitRule -> {
result.add(hitRule);
});
return new ArrayList<>(result);
}
tag对象的是:
public class Tag implements Serializable {
/**
* 标签名
*/
private String tagName;
/**
* 标签内容
*/
private String tagContent;
public Tag(){
}
public Tag(String tagName,String tagContent){
this.tagContent = tagContent;
this.tagName = tagName;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Tag)) {
return false;
}
Tag o1 = (Tag) o;
if (o1.getTagName() == null) {
return false;
}
return this.tagName == o1.getTagName();
}
@Override
public int hashCode() {
return this.tagName.hashCode();
}
public String getTagName() {
return tagName;
}
public void setTagName(String tagName) {
this.tagName = tagName;
}
public String getTagContent() {
return tagContent;
}
public void setTagContent(String tagContent) {
this.tagContent = tagContent;
}
}
注意点:在重写equal方法时一定要重写hascode方法。是由于equal方法在比较两个对象是否是一样的情况下,会先比较两个方法的hash码是否是一样。如果没有重写,两个对象的hash码是不一样的。可以参考https://www.cnblogs.com/tiancai/p/9022837.html
情况3,对已经存在的list进行排序
1. 循环list中的所有元素然后删除重复
public static List removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
2. 通过HashSet踢除重复元素
public static List removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
return list;
}
3. 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
4.把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中
public static List removeDuplicate(List list){
List listTemp = new ArrayList();
for(int i=0;i<list.size();i++){
if(!listTemp.contains(list.get(i))){
listTemp.add(list.get(i));
}
}
return listTemp;
}
最后
以上就是过时斑马为你收集整理的List去重复方法总结的全部内容,希望文章能够帮你解决List去重复方法总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复