如何在List集合中去重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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);


参考技术A 方法一:

对于方法一而言,这也许是一个小窍门。利用的是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());


以上是关于如何在List集合中去重的主要内容,如果未能解决你的问题,请参考以下文章

Java集合相关学习——如何实现List集合的去重操作?

framemaker如何在后台action中把list集合传到模板中去???

List集合去重

--------------------------------------集合List去重总结------------------------

List集合去重方式及效率对比

List集合去重的一种方法 z