如何从NavigableSet中删除元素

时间:2015-05-13 11:41:19

标签: java

我有如下的NavigableSet,如何删除数字< 2

 NavigableSet<Integer> ns = new TreeSet<Integer>(Arrays.asList(1,2,3));

所以最后我想看到ns只包含(2,3)

1 个答案:

答案 0 :(得分:0)

要在迭代时从数组/集中删除某些内容,必须使用迭代器,否则可能会遇到ConcurrentModificationException

NavigableSet<Integer> ns = new TreeSet<Integer>( Arrays.asList( 1, 2, 3 ) );
        Iterator<Integer> iterator = ns.iterator();

        while( iterator.hasNext() ){
            Integer next = iterator.next();
            if( next < 2 ){
                iterator.remove();
            }
        }

        System.out.println( ns );

打印:

[2, 3]

编辑:根据建议您也可以使用tailSet功能:

NavigableSet<Integer> tailSet = ns.tailSet( 2, true );

true参数可让您在套装中同时包含2。如果使用第二种方法,则不能在其中添加任何低于2的任何其他整数。