如何在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);
对于方法一而言,这也许是一个小窍门。利用的是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集合中去重的主要内容,如果未能解决你的问题,请参考以下文章
framemaker如何在后台action中把list集合传到模板中去???
--------------------------------------集合List去重总结------------------------