gpt4 book ai didi

使用 java、java 8、guava 和 apache commons实现列表元素查找

转载 作者:知者 更新时间:2024-03-12 08:00:36 25 4
gpt4 key购买 nike

此示例将使用 java、java 8、guava 和 apache commons实现列表元素查找。

原生Java

使用标准 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,此代码段将找到数组列表中的第一个元素。 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());
}

Google Guava

此代码段将展示如何使用 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 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);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com