假设我有代码:
List<String> list = new ArrayList<String>();
list.add("A"); //want
list.add("B");
list.add("C");
list.add("D"); //want
list.add("E"); //want
我希望创建一个新列表,其中只包含元素&#34; A&#34;,&#34; D&#34;,E&#34;。
List类有一个方法subList,如果你只有1个连续范围,它会起作用,但如果你想要多个范围或多个离散元素怎么办?
java或库中是否有任何方法允许我执行以下操作:
List<String> subList = NeatListUtilities.subList(list, 0, 3, 4);
答案 0 :(得分:2)
我不知道,但实施起来相当简单。
(没有错误/范围检查,假设使用ArrayList)
public static <T> List<T> subList(List<T> src, int... indices) {
List<T> result = new ArrayList<>(indices.length);
for(int i : indices) {
result.add(src.get(i));
}
return result;
}
答案 1 :(得分:1)
使用Stream
:
List<String> subList = IntStream.of(0, 3, 4)
.mapToObj(i -> list.get(i))
.collect(Collectors.toList());
所以,可能你不需要一个库。