我有如下的NavigableSet,如何删除数字< 2
NavigableSet<Integer> ns = new TreeSet<Integer>(Arrays.asList(1,2,3));
所以最后我想看到ns只包含(2,3)
答案 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的任何其他整数。