List去除重复的元素

     有两种方法,一种是去重不带顺序的,一种是去重带顺序的。

	/*
	 * 方法1:	无顺序
	 * Hastset根据hashcode判断是否重复,数据不会重复
	 */
	public static List<String> deleteDuplicate(List<String> list){
		Set<String> set = new HashSet<String>(list);
		list.clear();
		list.addAll(set);
		return list;
	}
	
	/*
	 * 方法2:带顺序
	 * 通过Hashset的add方法判断是否已经添加过相同的数据,如果已存在相同的数据则不添加
	 */
	public static List<String> deleteDuplicateWithOrder(List<String> list){
		
		Set<String> set = new HashSet<String>();
		List<String> newList = new ArrayList<String>();
		
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String str = (String)it.next();
			if(set.add(str)){
				newList.add(str);
			}
		}
		
		list.clear();
		list.addAll(newList);
		return newList;
	}

 

测试:

	@Test
	public void test1(){
		List<String> list = new ArrayList<String>();
		list.add("AAA");
		list.add("BBB");
		list.add("CCC");
		list.add("DDD");
		list.add("BBB");
		list.add("DDD");
		list.add("FFF");
		
		//AAA,CCC,BBB,DDD,FFF,
		list = deleteDuplicate(list);
	}
	
	@Test
	public void test2(){
		List<String> list = new ArrayList<String>();
		list.add("AAA");
		list.add("BBB");
		list.add("CCC");
		list.add("DDD");
		list.add("BBB");
		list.add("DDD");
		list.add("FFF");
		
		//AAA,BBB,CCC,DDD,FFF,
		list = deleteDuplicateWithOrder(list);
	}
posted @ 2016-09-03 22:25  ✈✈✈  阅读(328)  评论(0编辑  收藏  举报