新闻wordpress主题,优化网站排名软件,金华大企业网站建设有哪些,网站制作案例哪家强操作集合时#xff0c;查找列表中的元素是常见操作#xff0c;本文记录两个平常使用的List查找工具方法。
使用示例 Testpublic void testPositionAndFind() {ListInteger list Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//查找list中2的下标#xff0c;不存…操作集合时查找列表中的元素是常见操作本文记录两个平常使用的List查找工具方法。
使用示例 Testpublic void testPositionAndFind() {ListInteger list Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//查找list中2的下标不存在则为-1Integer twoIndex CollectionUtil.position(list, 2).orElse(-1);//查找list中index为3包含到5不包含之间是否存在0boolean zeroPresent CollectionUtil.position(list, 0, 3, 5).isPresent();//同上zeroPresent CollectionUtil.find(list, 0, 3,5 ).isPresent();//查找list中第一个偶数不存在就是-1Integer evenNum CollectionUtil.findIf(list, i - i % 2 0).orElse(-1);assertEquals((int) CollectionUtil.position(list, 1).get(), 0);assertEquals((int) CollectionUtil.position(list, 2).get(), 1);assertEquals((int) CollectionUtil.position(list, 20).orElse(-1), -1);assertTrue(CollectionUtil.position(list, 2).isPresent());assertFalse(CollectionUtil.position(list, 20).isPresent());assertTrue(CollectionUtil.position(list, 2, 1).isPresent());assertFalse(CollectionUtil.position(list, 2, 3).isPresent());assertTrue(CollectionUtil.position(list, 6, 0, 6).isPresent());assertFalse(CollectionUtil.position(list, 6, 0, 5).isPresent());assertEquals((int) CollectionUtil.positionIf(list, i - Objects.equals(i, 1)).get(), 0);assertEquals((int) CollectionUtil.positionIf(list, i - Objects.equals(i, 2)).get(), 1);assertEquals((int) CollectionUtil.positionIf(list, i - Objects.equals(i, 20)).orElse(-1), -1);assertTrue(CollectionUtil.positionIf(list, i - Objects.equals(i, 2)).isPresent());assertFalse(CollectionUtil.positionIf(list, i - Objects.equals(i, 20)).isPresent());assertTrue(CollectionUtil.positionIf(list, i - Objects.equals(i, 2), 1).isPresent());assertFalse(CollectionUtil.positionIf(list, i - Objects.equals(i, 2), 3).isPresent());assertTrue(CollectionUtil.positionIf(list, i - Objects.equals(i, 6), 0, 6).isPresent());assertFalse(CollectionUtil.positionIf(list, i - Objects.equals(i, 6), 0, 5).isPresent());assertEquals((int) CollectionUtil.find(list, 1).get(), 1);assertEquals((int) CollectionUtil.find(list, 2).get(), 2);assertEquals((int) CollectionUtil.find(list, 20).orElse(-1), -1);assertTrue(CollectionUtil.find(list, 2).isPresent());assertFalse(CollectionUtil.find(list, 20).isPresent());assertTrue(CollectionUtil.find(list, 2, 1).isPresent());assertFalse(CollectionUtil.find(list, 2, 3).isPresent());assertTrue(CollectionUtil.find(list, 6, 0, 6).isPresent());assertFalse(CollectionUtil.find(list, 6, 0, 5).isPresent());assertEquals((int) CollectionUtil.findIf(list, i - Objects.equals(i, 1)).get(), 1);assertEquals((int) CollectionUtil.findIf(list, i - Objects.equals(i, 2)).get(), 2);assertEquals((int) CollectionUtil.findIf(list, i - Objects.equals(i, 20)).orElse(-1), -1);assertTrue(CollectionUtil.findIf(list, i - Objects.equals(i, 2)).isPresent());assertFalse(CollectionUtil.findIf(list, i - Objects.equals(i, 20)).isPresent());assertTrue(CollectionUtil.findIf(list, i - Objects.equals(i, 2), 1).isPresent());assertFalse(CollectionUtil.findIf(list, i - Objects.equals(i, 2), 3).isPresent());assertTrue(CollectionUtil.findIf(list, i - Objects.equals(i, 6), 0, 6).isPresent());assertFalse(CollectionUtil.findIf(list, i - Objects.equals(i, 6), 0, 5).isPresent());}
API介绍 T OptionalT find(ListT list, T item): 查找list中和item equals的元素不存在就返回Optional.empty(); T OptionalT find(ListT list, T item, int start): 同上从下标为start的位置开始包含start; T OptionalT find(ListT list, T item, int start, int end): 同上从下标为start的位置开始包含start到下标为end的位置结束不包含end; T OptionalT findIf(ListT list, Predicate? super T predicate): 查找list中满足predicate 的元素不存在就返回Optional.empty(); T OptionalT findIf(ListT list, Predicate? super T predicate, int start): 同上从下标为start的位置开始包含start; T OptionalT findIf(ListT list, Predicate? super T predicate, int start, int end): 同上从下标为start的位置开始包含start到下标为end的位置结束不包含end; T OptionalInteger position(ListT list, T item): 查找list中和item equals的元素的下标不存在就返回Optional.empty(); T OptionalInteger position(ListT list, T item, int start): 同上从下标为start的位置开始包含start; T OptionalInteger position(ListT list, T item, int start, int end): 同上从下标为start的位置开始包含start到下标为end的位置结束不包含end; T OptionalInteger positionIf(ListT list, Predicate? super T predicate): 查找list中满足predicate 的元素的下标不存在就返回Optional.empty(); T OptionalInteger positionIf(ListT list, Predicate? super T predicate, int start): 同上从下标为start的位置开始包含start; T OptionalInteger positionIf(ListT list, Predicate? super T predicate, int start, int end): 同上从下标为start的位置开始包含start到下标为end的位置结束不包含end;
完整实现
public CollectionUtil{public static T OptionalT find(ListT list, T item) {return find(list, item, 0);}public static T OptionalT find(ListT list, T item, int start) {return find(list, item, start, list.size());}public static T OptionalT find(ListT list, T item, int start, int end) {return findIf(list, t - Objects.equals(t, item), start, end);}public static T OptionalT findIf(ListT list, Predicate? super T predicate) {return findIf(list, predicate, 0);}public static T OptionalT findIf(ListT list, Predicate? super T predicate, int start) {return findIf(list, predicate, start, list.size());}public static T OptionalT findIf(ListT list, Predicate? super T predicate, int start, int end) {IteratorT iterator list.iterator();int index 0;while (iterator.hasNext()) {T item iterator.next();if (index start) {if (predicate.test(item)) {return Optional.of(item);}}index;if (index end) {return Optional.empty();}}return Optional.empty();}public static T OptionalInteger position(ListT list, T item) {return position(list, item, 0);}public static T OptionalInteger position(ListT list, T item, int start) {return position(list, item, start, list.size());}public static T OptionalInteger position(ListT list, T item, int start, int end) {return positionIf(list, t - Objects.equals(t, item), start, end);}public static T OptionalInteger positionIf(ListT list, Predicate? super T predicate) {return positionIf(list, predicate, 0);}public static T OptionalInteger positionIf(ListT list, Predicate? super T predicate, int start) {return positionIf(list, predicate, start, list.size());}public static T OptionalInteger positionIf(ListT list, Predicate? super T predicate, int start, int end) {IteratorT iterator list.iterator();int index 0;while (iterator.hasNext()) {T item iterator.next();if (index start) {if (predicate.test(item)) {return Optional.of(index);}}index;if (index end) {return Optional.empty();}}return Optional.empty();}
}