数组列表筛选器

2022-08-31 20:41:48

你怎么能从Java ArrayList中过滤掉一些东西,比如如果你有:

  1. 你好吗
  2. 你好吗
  3. 话筒

过滤器是“如何”,它将删除乔和迈克。


答案 1

中,他们引入了方法demoveIf,该方法将谓词作为参数。

因此,这将很容易:

List<String> list = new ArrayList<>(Arrays.asList("How are you",
                                                  "How you doing",
                                                  "Joe",
                                                  "Mike"));
list.removeIf(s -> !s.contains("How"));

答案 2

也许最好的方法是使用番石榴

List<String> list = new ArrayList<String>();
list.add("How are you");
list.add("How you doing");
list.add("Joe");
list.add("Mike");
    
Collection<String> filtered = Collections2.filter(list,
    Predicates.containsPattern("How"));
print(filtered);

指纹

How are you
How you doing

如果您想将过滤后的集合作为列表获取,则可以使用这个(也来自Guava):

List<String> filteredList = Lists.newArrayList(Collections2.filter(
    list, Predicates.containsPattern("How")));