一个list里二个数相等都删除

1,1,2,2,2,3 结果是2,3
2,2,3,3,4  结果4
求帮助写不出list

解决方案 »

  1.   

    用一个hashmap存储值和重复次数,后期循环map删除统计大于2的
      

  2.   

    没看懂你的意思
    一个list里二个数相等都删除

    1,1,2,2,2,3 删除重复结果是1,2,3
    2,2,3,3,4  结果2,3,4, 
      

  3.   

    我刚学的时候用数组写的 重复时删除一个 思路都差不多
    public static void main(String[] args) 
    {
    int[] num={1,2,3,1,1,9,5,2,3};
    find(num);
    show(num);
    } public static void find(int[] arr)
    {
    int len=arr.length-1;
    for (int i=0;i<len ;i++ )
    {
    for (int j=i+1;j<=len;j++ )
    {
    if(arr[j]==arr[i])
    {
    arr[j]=0;
    }
    }
    }
    delete(arr);

    } public static void delete(int[] arr)
    {
    for (int i = 0;i < arr.length;i++ )
    {

    if(arr[i] == 0)
    {
    for (int j=i;j<arr.length-1;j++)
    {
    if(arr[j]!=0)
    {
    arr[i]=arr[j];
    arr[j]=0;
    break;
    }
    }
    }

    }
    }
    public static void show(int[] arr)
    {
    for (int i=0;i<arr.length ;i++ )
    {
    System.out.print(arr[i]+" ");
    }
    }
      

  4.   

    我用了fcbklistselection 这个在ie下有问题,选中的话list里会增加一个数子,取消选中在ie下也是增加这个数字。js改了很久改不好。只好改action
      

  5.   


        public static void noRepeat(List<Integer> list){
            Map<Integer,Integer> map = new HashMap<Integer,Integer>();
            //统计个数。
            //
            for(Integer i:list){
                Integer value = map.get(i);
                map.put(i,value==null?1:value+1);
            }
            Set<Integer> set = map.keySet();
            //偶数个数全删除,奇数保留一个。
            //
            for(Integer i:set){
                if(map.get(i)%2==0){
                    for(int j=0;j<map.get(i);j++){
                        list.remove(i);
                    }
                }else{
                    for(int j=0;j<map.get(i)-1;j++){
                        list.remove(i);
                    }
                }
            }
        }