如何过滤ArrayList中的空值
How to filter null values in ArrayList
我有一个很大的代码。我遇到了一个问题,在代码的最开始,null
被插入到 arraylist custlist
中,即 custlist 看起来像 [null]。在多行代码之后,我在使用 custlist
构建 Predicate 的地方更改了代码,如下所示:
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())
以来第一次检查通过了
并建立了谓词。当最终查询是 executed.My 时这给了我错误问题是 - 无论如何我可以确保谓词仅在 custlist 没有空值时创建。
我的问题是 - 就像 Collectionutils.isEmpty() 同时检查 null 和 emptyness 一样,如果有人可以帮助我一些 API 也可以检查 null inside arraylist
。
这是一个通用的解决方案:
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
使用流看起来像
myList.stream().filter(x-> x!=null).collect(Collectors.toList())
我有一个很大的代码。我遇到了一个问题,在代码的最开始,null
被插入到 arraylist custlist
中,即 custlist 看起来像 [null]。在多行代码之后,我在使用 custlist
构建 Predicate 的地方更改了代码,如下所示:
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())
以来第一次检查通过了
并建立了谓词。当最终查询是 executed.My 时这给了我错误问题是 - 无论如何我可以确保谓词仅在 custlist 没有空值时创建。
我的问题是 - 就像 Collectionutils.isEmpty() 同时检查 null 和 emptyness 一样,如果有人可以帮助我一些 API 也可以检查 null inside arraylist
。
这是一个通用的解决方案:
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
使用流看起来像
myList.stream().filter(x-> x!=null).collect(Collectors.toList())