此示例将使用 java、java 8、guava 和 apache commons实现列表元素查找。
使用标准 for 循环遍历集合,if 语句将检查匹配元素 3。如果找到匹配项,则将设置 value 变量。
@Test
public void find_elements_in_list_with_java () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = null;
for (Integer number : numbers) {
if (number == 3) {
value = number;
}
}
assertEquals(new Integer(3), value);
}
使用 Java 8,此代码段将找到数组列表中的第一个元素。 Java 8 Streams API 包含 Stream.Filter ,它将返回与谓词匹配的元素。通过 lambda 表达式传递一个 java predicate,流将过滤任何匹配值 3 的元素。如果任何元素匹配 Stream.findFirst 将返回一个描述该元素的 java Optional。如果没有元素匹配,则将返回一个空的可选项。
@Test
public void find_elements_in_list_with_java8_lambda () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Optional<Integer> value = numbers
.stream()
.filter(a -> a == 3)
.findFirst();
assertEquals(new Integer(3), value.get());
}
此代码段将展示如何使用 guava 查找数组列表中的第一个元素。 Guava 的 Iterables.find 将返回匹配提供的 guava predicate等于 3 的第一个元素。
@Test
public void find_elements_in_lists_with_guava () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = Iterables.find(numbers, new Predicate<Integer> () {
public boolean apply(Integer number) {
return number == 3 ;
}
});
assertEquals(new Integer(3), value);
}
与上面的示例类似,此代码段将使用 apache commons 通过将 apache predicate传递给 CollectionUtils.find 方法来查找集合中的第一个元素。
@Test
public void find_elements_in_list_with_apachecommons () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = (Integer) CollectionUtils.find(numbers, new org.apache.commons.collections.Predicate() {
public boolean evaluate(Object number) {
return ((Integer)number).intValue() == 3 ;
}
});
assertEquals(new Integer(3), value);
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : http://www.leveluplunch.com/java/examples/find-element-in-list/
内容来源于网络,如有侵权,请联系作者删除!