int index = list.stream().indexOf(e -> "TESTNAME".equals(e.getName()));
int index = list.indexOf(list.stream().filter(e -> "TESTNAME".equals(e.getName()))
.findFirst().get());
public static <T> int indexOf(List<T> list, Predicate<? super T> predicate) {
int idx = 0;
for (Iterator<T> iter = list.iterator(); iter.hasNext(); idx++) {
if (predicate.test(iter.next())) {
return idx;
}
}
return -1;
}
您的循环还不错,但您可以简化它:
public static <T> int indexOf(List<T> list, Predicate<? super T> predicate) {
for(ListIterator<T> iter = list.listIterator(); iter.hasNext(); )
if(predicate.test(iter.next())) return iter.previousIndex();
return -1;
}
您可以使用像这样的流
public static <T> int indexOf(List<T> list, Predicate<? super T> predicate) {
return IntStream.range(0, list.size())
.filter(ix -> predicate.test(list.get(ix)))
.findFirst().orElse(-1);
}
但如果列表很大而且不是随机访问,这将变得相当低效。我会留在回路里。
public static <T> int indexOf(List<T> list, Predicate<? super T> predicate) {
long noMatchPrefix = list.stream().takeWhile(predicate.negate()).count();
return noMatchPrefix == list.size()? -1: (int) noMatchPrefix;
}
我试图通过首先添加花括号来创建多行,但Eclipse抱怨以下代码: 它在filter下放置红线后说:“类型中的方法不适用于参数”
我想从getdate()获取标题(yyyy-mm)中的日期格式,以便在where子句中使用它来获取
我有一个淡褐色IMAP看起来像 在val1,val2上建立索引我正在尝试获取say
问题基于https://stackoverflow.com/A/29671501/2517622 有办法吗?
我需要使用stream().reduce()基于谓词创建2个列表。我有一个类似的代码,但它不起作用。
谓词是指用方括号写的XPath表达式。 它指的是为某些条件限制节点集中的选定节点。 例如, 序号 序号 描述 1 选择第一个元素,它是元素的子元素。 2 选择最后一个元素,它是元素的子元素。 3 使用选择元素。 4 选择大于的元素。 示例 此示例通过迭代每个学生创建一个包含其详细信息的元素。 它计算节点的位置,然后打印学生的详细信息以及序列号。 文件:students.xml - 文件:stude