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);
}
网友评论