有如下ListList list = new ArrayList();
list.add("a");
list.add("b");
list.add("a");
list.add("c");
list.add("a");
list.add("b");
list.add("d");现在删除list中重复的元素,注意:只要重复的都要删除,把不重复的放到另外一个LIST中。希望的结果: c,d谢谢各位

解决方案 »

  1.   

    import java.util.*;
    public class Test
    {
    public static void main(String[] args){
    Test t = new Test();
    List list = t.getList();
    List l = new ArrayList();
    for (int i = 0 ; i < list.size() ;i++ )
    {
    boolean b = t.isunique((String)list.get(i) , list);
    if (b)
    {
    l.add(list.get(i));
    }
    }
    }
    public List getList(){
    List list = new ArrayList();
    list.add("a");
    list.add("b");
    list.add("a");
    list.add("c");
    list.add("a");
    list.add("b");
    list.add("d");
    return list;
    }
    public boolean isunique(String s , List list){
    int count = 0;
    for(int i = 0 ; i < list.size() ; i++){
    if (list.get(i).equals(s))
    {
    count++;
    }
    }
    if (count == 1)
    {
    return true;
    } else {
    return false;
    }
    }
    }
      

  2.   


    顶1楼,用Set删除重复元素
      

  3.   

    用set做,本身就没有重复的了
      

  4.   


    用set会保留a 和 b,还是自己写算法吧
      

  5.   

    往Map里面放,然后再放回来!
      

  6.   


    package com.configuration.action;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;public class Test1 { /**
     * @param args
     */
    public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("a");
    list.add("c");
    list.add("a");
    list.add("b");
    list.add("d");
            
    List<String> list1 = new ArrayList<String>();
    Map<String, Integer> map = new HashMap<String, Integer>();
    for(String temp : list){
    if(map.containsKey(temp)) map.put(temp, map.get(temp)+1);
    else map.put(temp, 1);
    }

    Iterator<String> iter = list.iterator();
    while(iter.hasNext()){
    String temp = iter.next();
    if(map.get(temp)>1) iter.remove();
    }
    }
    }
      

  7.   

    随便写个方法,貌似没错了。
    private static List<String> distinct(List<String> list)
    {
    int index = 1;
    String temp = list.get(0);
    String obj;
    tocontinue:for(int j = 1; j < list.size();j++)
    {
    obj = list.get(j);
    if(temp.equals(obj))
    {
    continue;
    }
    for(int i = 0; i < index; i++)
    {
    temp = list.get(i);
    if(temp.equals(obj))
    {
    continue tocontinue;
    }
    }
    list.set(index, obj);
    index++;
    }
    return list.subList(0, index);
    }
      

  8.   

    A:List
    B:Set(A)
    C:B-Set(A-B)
      

  9.   


    import java.util.*;public class  Test
    {
    public static void main(String[] args) 
    {
    int i = 0 , j = 0;
    List<String> list = new ArrayList<String>(); list.add("a");
    list.add("b");
    list.add("a");
    list.add("c");
    list.add("a");
    list.add("b");
    list.add("d");


    list = del(list);
    for(String e : list)
    {
    System.out.print(e + " ");
    }
    }

    public static List<String> del(List<String> list)
    {
    if(null == list) return null;
    Collections.sort(list);               


    int j = 0 , flag = 0;                     //j下一个待插入的位置,flag标记是否重复
    String s = list.get(0); for(int i = 1 ; i < list.size() ; i++)    //剔除相同元素
    {
    String t = list.get(i);
    if(true == s.equals(t))
    {
    flag = 1;
    }
    else
    {
    if(0 == flag)
    {
    list.set(j, s);
    j++;
    }
    flag = 0;
    s = t;
    }
    }
    if(0 == flag) 
    {
    list.set(j, s);
    j++;
    }
    return list.subList(0, j);
    }

    }
      

  10.   

    这个还是很好理解的,统计各元素在list中出现的次数