选择集合中的第一个索引

adf*_*gvx 3 java

我有时觉得我正在重新发明轮子.

我想知道在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;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

番石榴有Iterables.indexOf一个谓词:

int index = Iterables.indexOf(list, new Predicate<String> {
        @Override public boolean apply(String input) {
            return input.contains(search);
        }
    });
Run Code Online (Sandbox Code Playgroud)

不可否认,并不是更好 - 而且你需要做出search决定.但至少在Java 8中,您将能够编写如下内容:

int index = Iterables.indexOf(list, input => input.contains(search));
Run Code Online (Sandbox Code Playgroud)

(或者至少是类似的东西.可能在扩展方法语法中......)