首页 > 解决方案 > 我如何获取所有 >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 (我正在尝试解决排列任务)所以我正在寻找一些方法来重构我的代码的某些部分。

先感谢您。和平与爱!

标签: javaperformanceloopsfor-looparraylist

解决方案


您可以做的一件事是使用实现 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并直接从那里返回元素


推荐阅读