zoukankan      html  css  js  c++  java
  • 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);
    	}
  • 相关阅读:
    loj6158 A+B Problem (扩展KMP)
    2017CodeM初赛B场
    Codeforces Round #421(div 2)
    CF821E(多次矩阵快速幂)
    Codechef-ANCESTOR(树套树/CDQ分治)
    Codechef-BLACKCOM(树形背包dp)
    Codechef-CHEFPRAD(找事件点+贪心)
    洛谷 p3391
    luogu p3369
    LOJ10082
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5838147.html
Copyright © 2011-2022 走看看