如何从集合中删除数组?

Sha*_*kti 1 java collections

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

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());
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

Kyr*_*tar 5

这绝对是可能的iterator.由于数组不会覆盖equals,因此您需要静态Arrays方法.

 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());
    }
Run Code Online (Sandbox Code Playgroud)