java - 如何过滤ArrayList中的空值

标签 java jpa arraylist spring-data-jpa jpa-criteria

我有一个非常大的代码。我遇到一个问题,在代码的一开始,null 被插入到 arraylist cuSTList 中,即 cuSTList 看起来像 [null]。在许多行代码之后,我对使用 cuSTList 构建谓词的代码进行了更改,如下所示:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Customer> q = cb.createQuery(Customer.class);

Root<Customer> root = q.from(Customer.class);
q.select(root);
if (!CollectionUtils.isEmpty(custlist)){
Predicate predicate1 =root.get("custid").in(custlist);
}

q.where(predicate1);
TypedQuery<Customer> tq = em.createQuery(q);
List<Customer> allcust= tq.getResultList();

因此,自 (cuSTList != null && !cuSTList.isEmpty()) 起,第一个检查就通过了 并建立了谓词。当执行最终查询时,这给了我错误。我的问题是 - 无论如何,我是否可以确保仅当 cuSTList 没有空值时才创建谓词。 我的要求是 - 就像 Collectionutils.isEmpty() 同时检查 null 和空性一样,如果有人可以帮助我使用一些也可以检查 arraylist 内的 null 的 API。

最佳答案

这是一个通用的解决方案:

private static ArrayList<String> list = new ArrayList<String>();
public static void main(String[] args) {
    list.add("foo");
    list.add("bar");
    if (!list.isEmpty() && !list.contains(null))
        System.out.println("ok");
    list.add(null);
    if (!list.isEmpty() && !list.contains(null))
        System.out.println("not ok");
}

结果

ok

关于java - 如何过滤ArrayList中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348565/

相关文章:

java - Hibernate JPA 递归查询

java - JPA Commit 与 Oracle 的问题

java - 使用 ArrayList 中的数据写入 JTextArea - Java Swing

java - 从 ArrayList Java 中删除项目..需要访问器

java - 为什么将第一项添加到集合中比第二项慢得多?

java - 使用带有 JList 和静态数组的 ActionListener

java - 从数据库中的第一项获取特定数据

java - 从 OkHttp 到 HttpURLConnection

java - Android 应用程序上缺少 org/apache/http/client/methods/HttpUriRequest

java - entityManager.flush()会清除二级缓存吗?