如何在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个回答  2016-04-17
方法一:

对于方法一而言,这也许是一个小窍门。利用的是Set集合中不允许出现重复的元素。

废话也不多说,请看代码:

package com.yonyou.test;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

/**
* 测试类
* @author 小浩
* @创建日期 2015-3-2
*/

public class Test{
public static void main(String[] args) {
List<String> vector=new Vector<String>(); //这里的vector可以换成ArrayList或者LinkedList,效果都一样
vector.add("Hello");
vector.add("world");
vector.add("Hello");
System.out.println("去重之前vector中的集合为:"+vector.toString());
Set<String> set=new HashSet<String>(vector);
vector=new Vector<String>(set);
System.out.println("去重之后vector中的集合为:"+vector.toString());
}
}

方法二:

对于List集合去重的第二种方法而言,其实想法比较简单也是正常思路,请继续看代码:

package com.yonyou.test;

import java.util.List;
import java.util.Vector;

/**
* 测试类
* @author 小浩
* @创建日期 2015-3-2
*/

public class Test{
public static void main(String[] args) {
List<String> vector=new Vector<String>();
vector.add("Hello");
vector.add("world");
vector.add("Hello");
System.out.println("去重之前vector中的集合为:"+vector.toString());
List<String> newVector=new Vector<String>();
for(String str:vector)
{
if(!newVector.contains(str))
newVector.add(str);
}
System.out.println("去重之后vector中的集合为:"+newVector.toString());

}
}本回答被网友采纳
相似回答