美文网首页
Guava 集合工具 Iterables

Guava 集合工具 Iterables

作者: Tinyspot | 来源:发表于2023-11-17 15:40 被阅读0次

1. com.google.common.collect.Iterables

public final class Iterables {
  private Iterables() {}

}

2. 常用方法

2.1 Iterables.find(Iterable, Predicate)

@Test
public void iterablesFind() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"));

    OrderDTO orderDTO = Iterables.find(orderDTOS, new Predicate<OrderDTO>() {
        @Override
        public boolean apply(OrderDTO input) {
            return input.getOrderCode().equals("1001");
        }
    });
}

如果找不到会抛异常 java.util.NoSuchElementException

2.2 Iterables.tryFind(Iterable, Predicate)

@Test
public void iterablesTryFind() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"));

    OrderDTO orderDTO = Iterables.tryFind(orderDTOS, input -> input.getOrderCode().equals("1002")).orNull();
}

2.3 Iterables.any(Iterable, Predicate)

@Test
public void iterablesAny() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"), new OrderDTO("1002", "20231101"));

    boolean flag = Iterables.any(orderDTOS, input -> input.getOrderCode().equals("1001"));
}

2.4 Iterables.filter(Iterable, Predicate)

@Test
public void iterablesFilter() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"), new OrderDTO("1002", "20231101"));

    ArrayList<OrderDTO> orders = Lists.newArrayList(
            Iterables.filter(orderDTOS, input -> !input.getOrderCode().equals("1002")));
}

2.5 Iterables.concat(Iterable, Iterable, Iterable)

@Test
public void iterablesConcat() {

    List<OrderDTO> firstOrders = Arrays.asList(new OrderDTO("1001", "20230101"));
    List<OrderDTO> secondOrders = Arrays.asList(new OrderDTO("1002", "20230101"));
    List<OrderDTO> thirdOrders = Arrays.asList(new OrderDTO("1003", "20230101"));

    Iterable<OrderDTO> concat = Iterables.concat(firstOrders, secondOrders, thirdOrders);
    List<OrderDTO> orderDTOS = Lists.newArrayList(concat);
}

2.6 Iterables.transform(Iterable, Function)

@Test
public void iteratorTransform() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"), new OrderDTO("1002", "20231101"));

    Iterable<String> transform = Iterables.transform(orderDTOS, OrderDTO::getTradeId);
    Iterator<String> iterator = transform.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

2.7 Iterables.toArray(Iterable, Class<T> type)

@Test
public void iterablesToArray() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"), new OrderDTO("1002", "20231101"));

    OrderDTO[] orderArray = Iterables.toArray(orderDTOS, OrderDTO.class);

    ArrayList<String> tradeIds = Lists.newArrayList(
            Iterables.toArray(
                    Iterables.transform(orderDTOS, OrderDTO::getTradeId), 
                    String.class));
}

2.8 Iterables.all(Iterable, Predicate)

@Test
public void all() {
    List<OrderDTO> orderDTOS = Arrays.asList(new OrderDTO("1001", "20230101"),
            new OrderDTO("1001", "20230201"));

    boolean all = Iterables.all(orderDTOS, orderDTO -> orderDTO.getOrderCode().equals("1001"));
    System.out.println(all);
}

相关文章

网友评论

      本文标题:Guava 集合工具 Iterables

      本文链接:https://www.haomeiwen.com/subject/katuwdtx.html