如果已经有重复的数据在list里面了,可以先根据某个属性进行排序,然后再从头开始逐个对比数据,有重复的就remove掉。我不晓得list有没有自带的去重复函数,可以去研究下。
另外,在将数据加入到list的时候,可以先对list进行查找,看是否当前添加的数据存在否,如果存在,则不进行添加,不存在才加到list。
通过循环进行删除
public static void 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); 。
}
System.out.println(list);。
通过HashSet删除
public static void removeDuplicate(List list) {。
HashSet h = new HashSet(list);。
list.clear();
list.addAll(h);。
System.out.println(list);。
3、删除重复元素,并保持顺序。(我没试)
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、定义一个方法,调用即可。
publi List<String> getNewList(List<String> li){。
List<String> list = new ArrayList<String>();。
for(int i=0; i<li.size(); i++){。
String str = li.get(i); //获取传入集合对象的每一个元素。
if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果没有则加入。
list.add(str);
return list; //返回集合。
public class Test{。
public static void main(String[] args){。
ArrayList<String> arr = new ArrayList<String>();。
arr.add("aaa");。
arr.add("bbb");。
arr.add("aaa");。
arr.add("ccc");。
arr = getNewList(arr); //方法去重。
System.out.println(arr);。
package com.test;。
import java.util.*;public class Test { /**。
AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC */。
public static void main(String[] args) {。
List<String> list = new ArrayList<String>();。
list.add("AAAA");。
list.add("AAAA");。
list.add("AAAA");。
list.add("BBBB");。
list.add("BBBB");。
list.add("BBBB");。
list.add("CCCC");。
list.add("CCCC");。
list.add("CCCC");。
list.add("DDDD"); new Test().removeDuplicateWithOrder(list);// System.out.println(list); } // 删除ArrayList中重复元素。
public static void 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);。
System.out.println(list);。
} // 方法二:通过HashSet剔除 // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用。
public static void removeDuplicate1(List list) {。
HashSet h = new HashSet(list);。
list.clear();
list.addAll(h);。
System.out.println(list);。
} // 方法三: 删除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);。
1.用双重循环逐一检查元素是否重复,代码如下:
public static void 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);。
}。
}
}
}
2.通过HashSet去重,代码如下:
public static void removeDuplicate1(List list) {。
HashSet h = new HashSet(list);。
list.clear();。
list.addAll(h);。
}
属性是????
先给你一个看看是不是你需要的好了,
// 利用 Set 的特性,将所有项目放入 Set 。
//中即可移除重复的项目
Set<String> stringSet = new HashSet<String>();。
for (String element : duplicateArray) {。
stringSet.add(element);。
}
// Set.size() 为不重复项目的个数。
String nonDuplicateArray[] = new String[stringSet.size()];。
// 将 Set 中的项目取出放到 nonDuplicateArray 中。
Object[] tempArray = stringSet.toArray();。
for (int i = 0; i < tempArray.length; i++) {。
nonDuplicateArray[i] = (String) tempArray[i];。
}
一个对象怎样算重复?
需要自己实现hashCode()和equals()方法来申明两个对象‘相等’的判断条件。
最简单的就是
一个或多个成员变量的值相等(比如id,name)等,就认为这两个对象相等。
在这种情况下,就好办了
Set set = new HashSet();。
set.addAll(list);。
到这一步,已经利用set的特性去重了。
接下来再把去重后的集合放到一个新的list去即可。
List newlist = new ArrayList();。
newlist.addAll(set);。
去重本身很简单。
复杂在对‘对象相等’概念的理解。
默认情况下,两个对象在继承了Object的方法后,
只有当堆内存地址相等的情况下,才相等。
所以,必须要自己重写equals和hashCode。