我觉得有时候我正在重新发明轮子。
我想知道java / jakarta commons / guava /?中是否有任何实用程序方法,这将更深入地进行集合并使用元素执行某些操作(测试,修改,删除)。
我写了这个方法,现在我觉得有一些单行可以做到。
/**
* Find index of first line that contains search string.
*/
public static int findIdx(List<String> list, String search) {
for (int i = 0, n = list.size(); i < n; i++)
if (list.get(i).contains(search))
return i;
return -1;
}
答案 0 :(得分:5)
Guava的Iterables.indexOf
带有谓词:
int index = Iterables.indexOf(list, new Predicate<String> {
@Override public boolean apply(String input) {
return input.contains(search);
}
});
不可否认,并不是更好 - 而且你需要让search
最终成功。但至少在Java 8中你可以编写类似的东西:
int index = Iterables.indexOf(list, input => input.contains(search));
(或者至少喜欢那些。可能在扩展方法语法中......)
答案 1 :(得分:2)
Guava在Iterables.indexOf()
中有你想要的东西,虽然我不认为它会让你的代码更具可读性:
public static int findIdx(List<String> list, final String search) {
return Iterables.<String> indexOf(list, new Predicate<String>() {
public boolean apply(String s) {
return s.contains(search);
}
});
}