list中删除的最好方式

5. 通过Stream的过滤方法,因为Stream每次处理后都会生成一个新的Stream,不存在并发问题,所以Stream的filter也可以修改list集合。(**建议,简单高效**)
1
2
3
4
5
6
public List<String> streamRemove() { 
List<String> students = this.getStudents();
return students.stream()
.filter(this::notNeedDel)
.collect(Collectors.toList());
}
  1. 通过removeIf方法,实现元素的过滤删除。从Java 8开始,List接口提供了removeIf方法用于删除所有满足特定条件的数组元素(推荐
1
arraylist.removeIf(this::needDel);

BitSet常见的使用例子往往和大数相关:

  1. ==现在有1千万个随机数,随机数的范围在1到1亿之间。求出将1到1亿之间没有在随机数中的数==
  2. 统计N亿个数据中没有出现的数据
  3. 将N亿个不同数据进行排序等
    (不太理解这种,随机数是自己去生成?还是啥意思,随机数是函数?)
    但是BitSet也有缺点,譬如集合中存储一些差值比较大的数,如1亿和1两个数,就会导致内存的严重浪费

==list中去sublist 形成的list是引用的原来的list中的内容,并不是新创建了一个list,所以在这个sublist中修改内容或者插入数据,会导致原来的list中的内容也会改变!==

如果不想改变原有list,那么新建一个list 这么写即可

1
2
subList = Lists.newArrayList(subList);
list.stream().skip(start).limit(end).collect(Collectors.toList());