kev*_*c45 38 java collections arraylist
如何从Java ArrayList中过滤掉一些内容,如果你有:
过滤器是"如何"它将删除乔和迈克.
Ale*_* C. 57
在java-8中,他们引入了removeIf一个带Predicate参数的方法.
所以很容易:
List<String> list = new ArrayList<>(Arrays.asList("How are you",
"How you doing",
"Joe",
"Mike"));
list.removeIf(s -> !s.contains("How"));
Run Code Online (Sandbox Code Playgroud)
use*_*882 53
可能最好的方法是使用番石榴
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);
Run Code Online (Sandbox Code Playgroud)
版画
How are you
How you doing
Run Code Online (Sandbox Code Playgroud)
如果您想将过滤后的集合作为列表获取,可以使用此(也来自Guava):
List<String> filteredList = Lists.newArrayList(Collections2.filter(
list, Predicates.containsPattern("How")));
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 27
遍历列表并检查是否包含字符串"How",如果包含,则删除.您可以使用以下代码:
// need to construct a new ArrayList otherwise remove operation will not be supported
List<String> list = new ArrayList<String>(Arrays.asList(new String[]
{"How are you?", "How you doing?","Joe", "Mike"}));
System.out.println("List Before: " + list);
for (Iterator<String> it=list.iterator(); it.hasNext();) {
if (!it.next().contains("How"))
it.remove(); // NOTE: Iterator's remove method, not ArrayList's, is used.
}
System.out.println("List After: " + list);
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
List Before: [How are you?, How you doing?, Joe, Mike]
List After: [How are you?, How you doing?]
Run Code Online (Sandbox Code Playgroud)
写你自己的过滤功能
public List<T> filter(Predicate<T> criteria, List<T> list) {
return list.stream().filter(criteria).collect(Collectors.<T>toList());
}
Run Code Online (Sandbox Code Playgroud)
然后使用
list = new Test().filter(x -> x > 2, list);
Run Code Online (Sandbox Code Playgroud)
这是Java中最整洁的版本,但需要JDK 1.8才能支持lambda演算
| 归档时间: |
|
| 查看次数: |
131919 次 |
| 最近记录: |