java - 我如何获取所有 >n 的 ArrayList 元素
问题描述
有没有其他方法可以找到所有ArrayList<Long>
大于n
. 现在我使用默认的for循环
List<Long>nex= new ArrayList<>();
for(int i=0;i<result.size();i++){
if(Long.valueOf(result.get(i))>n){
nex.add(Long.valueOf(result.get(i)));
}
}
它工作得很好,但它太慢了,因为我的 result.size 通常 >20k (我正在尝试解决排列任务)所以我正在寻找一些方法来重构我的代码的某些部分。
先感谢您。和平与爱!
解决方案
您可以做的一件事是使用实现 SortedSet 的 Collection,因此每个添加都将被排序,然后您可以在达到限制后立即中断循环。
例子 :
import java.util.*;
public class AnonymousTest {
public static void main(String[] args) {
SortedSet<Integer> integers = new TreeSet<>(Comparator.comparingInt(s -> (Integer) s).reversed());
integers.add(2);
integers.add(1);
integers.add(9);
integers.add(4);
integers.stream().takeWhile(i -> i > 3).forEach(System.out::print);
System.out.println();
integers.add(3);
integers.add(6);
integers.stream().takeWhile(i -> i > 3).forEach(System.out::print);
}
}
输出
94
964
优化它的另一种方法是存储整数大于的索引n
并直接从那里返回元素
推荐阅读
- oracle - 是否可以使用同义词而不是表在 SQL Developer 中创建 ER 图?
- sas - SAS 复制值
- string - tkinter askstring 在其可见性改变之前被删除
- python - 如何将 Pandas DataFrame 与列表的字典合并
- performance - JMeter & Salesforce:面临错误,因为“加载 Visualforce 页面时发生错误。尝试取消引用空对象'
- elasticsearch - 如何在跨字段查询中包含部分匹配的结果?
- python - 无法导入彭博 api
- python - Python BeautifulSoup 在字符后拆分文本
- c++ - 错误 LNK2001:无法解析的外部符号,c++ 项目编译
- azure - 规范化资源以列出 Azure 存储表