如何从对象列表中将所有字符串添加到ArrayList最有效?

时间:2017-01-26 21:17:51

标签: java jpa

注意:如果你能写得更好,请编辑标题。我不知道如何更好地解释它......

解决问题: 我正在以javafx形式使用自动完成,需要将所有客户firstName放入字符串列表中。我使用JPA从数据库中获取所有客户。所以我有点担心代码的速度......你明白为什么......

代码示例:

public static List<String> getAllFirstNamesCustomer() {
        List<String> names = new ArrayList<>();
        for (Customer c : CustomerBean.getAllCustomers()) {
            names.add(c.getCName());
        }
        List<String> output =
            new ArrayList<>(new LinkedHashSet<>(names));
        return output;

    }  

编辑:

认为我找到了更好的方法:

public static List<String> getAllFirstNamesCustomer() {
    return em.createNativeQuery("select DISTINCT cname from customer").getResultList();  
}

1 个答案:

答案 0 :(得分:1)

数据库驱动程序可以选择流式传输数据。 解决方法和更大的客户数据集,您可以利用Java 8's并行流,利用CPU的所有核心,使用一个内核

List<String> names = CustomerBean.getAllCustomers().parallelStream().map(c.getCName()).collect(toList());