java arraylist 过滤_关于java:ArrayList过滤器
本問題已經(jīng)有最佳答案,請猛點這里訪問。
如何從Java ARAYLIST中篩選出一些東西,如:
你好嗎?
你怎么做
喬
邁克
過濾器是"怎樣"的,它可以去除喬和邁克。
這可能有助于stackoverflow.com/questions/122105/…
最好的解決方案是使用其他的收集數(shù)據(jù)結(jié)構(gòu),而不是arraylist:code.google.com/p/google-collections
在Java-8中,他們引入了以Predicate為參數(shù)的方法removeIf。
所以很容易做到:
List list = new ArrayList<>(Arrays.asList("How are you",
"How you doing",
"Joe",
"Mike"));
list.removeIf(s -> !s.contains("How"));
調(diào)用需要API級別24
也許最好的方法是用番石榴
List list = new ArrayList();
list.add("How are you");
list.add("How you doing");
list.add("Joe");
list.add("Mike");
Collection filtered = Collections2.filter(list,
Predicates.containsPattern("How"));
print(filtered);
印刷品
How are you
How you doing
如果要將篩選后的集合作為列表,可以使用此項(也可以從guava獲取):
List filteredList = Lists.newArrayList(Collections2.filter(
list, Predicates.containsPattern("How")));
集體2中的2是什么?
DavoudTaghawi Nejad,這可能是因為在標準Java中已經(jīng)有EDCOX1 1類。所以很明顯哪個類是哪個類,如果它們在一個類中使用,那么您不必使用完全限定名來區(qū)分它們。
在android中,它不能解決謂詞作為謂詞時的給出錯誤。
知道了。。我使用了錯誤的庫..現(xiàn)在我用的是guava-16.0.1.jar
如何過濾不是"如何"的字符串?
@泰美得使用not():filter(list, not(Predicates.containsPattern("How"))。
遍歷列表并檢查是否包含字符串"how",如果包含字符串,則將其刪除。您可以使用以下代碼:
// need to construct a new ArrayList otherwise remove operation will not be supported
List list = new ArrayList(Arrays.asList(new String[]
{"How are you?","How you doing?","Joe","Mike"}));
System.out.println("List Before:" + list);
for (Iterator 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);
輸出:
List Before: [How are you?, How you doing?, Joe, Mike]
List After: [How are you?, How you doing?]
下一步()在第一次調(diào)用它時返回什么?
第一次調(diào)用it.next()將返回集合(list)中的第一個項。
我喜歡這個,因為它是最簡單的,不涉及第三方圖書館。
給自己寫一個過濾函數(shù)
public List filter(Predicate criteria, List list) {
return list.stream().filter(criteria).collect(Collectors.toList());
}
然后使用
list = new Test().filter(x -> x > 2, list);
這是Java中最簡潔的版本,但是需要JDK 1.8來支持lambda演算。
我同意先前的答案,谷歌的番石榴可能在這里幫助很大,可讀性方面:
final Iterables.removeIf(list, new Predicate() {
@Override
public boolean apply(String input) {
if(input.contains("How")) { //or more complex pattern matching
return true;
}
return false;
}
});
請注意,這基本上是一個guava的副本——如何根據(jù)謂詞從列表中刪除,以跟蹤刪除的內(nèi)容?
由于您沒有給我們太多信息,我假設您編寫代碼的語言是C。首先:首選System.Collections.Generic.List而不是ArrayList。第二:一種方法是循環(huán)遍歷列表中的每一項,并檢查它是否包含"how"。另一種方法是使用LINQ。下面是一個快速的例子,它過濾掉了所有不包含"如何"的項目:
var list = new List();
list.AddRange(new string[] {
"How are you?",
"How you doing?",
"Joe",
"Mike", });
foreach (string str in list.Where(s => s.Contains("How")))
{
Console.WriteLine(str);
}
Console.ReadLine();
"因為你沒有給我們很多信息",但有你的信息,帖子被標記為Java。
@新建大檢查編輯歷史記錄…StAccOfFult.COM/PASS/9146224/修訂"Java"標簽在該答案之后被添加。
總結(jié)
以上是生活随笔為你收集整理的java arraylist 过滤_关于java:ArrayList过滤器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 删除含有关键词的文件_lin
- 下一篇: 开发接口文档_更优更稳更好,看文档驱动开