如何从集合中删除数组? [英] How to remove an array from a collection?

查看:63
本文介绍了如何从集合中删除数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Integer []集合,我想从中删除一些元素,但是似乎通常的remove方法不起作用。
除了迭代和比较Integer []的每个元素之外,是否还有其他解决方法。
下面是针对此问题的测试代码。

I have a collection of Integer[] and I want to remove some elements out of it, but seems the usual remove method won't work. Is there any other workaround other than iterating and comparing each of the elements of Integer[] . Below is the test code for this problem.

import java.util.ArrayList;
import java.util.List;


public class Test {

    public static void main(String args[]){
        List<Integer[]> subSet = new ArrayList<Integer[]>();
        subSet.add(new Integer[]{0,1,2,3,4});
        subSet.add(new Integer[]{0,1,2,3,5});
        subSet.add(new Integer[]{0,0,0,0,0});
        //prune this collection by removing an Integer[] 
        Integer[] elementToRemove = {0,0,0,0,0};
        System.out.println( "Before " + subSet.size());
        subSet.remove(elementToRemove);
        System.out.println( "After " + subSet.size());
        //
    }
}


推荐答案

使用迭代器绝对有可能。由于数组不会覆盖等于,因此您需要静态的 Arrays 方法。

It's definitely possible with an iterator. Since arrays do not override equals, you need the static Arrays method.

 public static void main(String args[]){
        List<Integer[]> subSet = new ArrayList<Integer[]>();
        subSet.add(new Integer[]{0,1,2,3,4});
        subSet.add(new Integer[]{0,1,2,3,5});
        subSet.add(new Integer[]{0,0,0,0,0});
        //prune this collection by removing an Integer[] 
        Integer[] elementToRemove = {0,0,0,0,0};
        System.out.println( "Before " + subSet.size());

        //get your Integer[] iterator
        Iterator<Integer[]> it = subSet.iterator();
        //for each element in the array
        while(it.hasNext()){

            //check if it is equal to the elementToRemove
            if(Arrays.equals(it.next(), elementToRemove)){
                //remove it
                it.remove();
            }                   
        }
        System.out.println( "After " + subSet.size());
    }

这篇关于如何从集合中删除数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆