Java知识点小结
Java 知识点小结
List 中删除元素的推荐方式
- 通过 Stream 的 filter 方法,因为 Stream 每次处理后都会生成一个新的 Stream,不存在并发问题,所以 Stream 的 filter 也可以修改 list 集合。(建议,简单高效)
1 | public List<String> streamRemove() { |
- 通过 removeIf 方法,实现元素的过滤删除。从 Java 8 开始,List 接口提供了 removeIf 方法用于删除所有满足特定条件的数组元素(推荐)
1 | arraylist.removeIf(this::needDel); |
BitSet 大数据场景
BitSet 常见的使用例子往往和大数相关:
- 现在有 1 千万个随机数,随机数的范围在 1 到 1 亿之间,求出 1 到 1 亿之间没有在随机数中的数
- 统计 N 亿个数据中没有出现的数据
- 将 N 亿个不同数据进行排序等
(不太理解这种,随机数是自己去生成?还是啥意思,随机数是函数?)
但是 BitSet 也有缺点,譬如集合中存储一些差值比较大的数,如 1 亿和 1 两个数,就会导致内存的严重浪费。
subList 引用陷阱
List 中通过 subList 形成的 list 是引用原来的 list 中的内容,并不是新创建了一个 list,所以在这个 subList 中修改内容或者插入数据,会导致原来的 list 中的内容也会改变!
如果不想改变原有 list,那么新建一个 list 这样写即可:
1 | subList = Lists.newArrayList(subList); |
评论
