List.subLis()
获取列表中指定范围的子列表
它接受两个参数 fromIndex
和 toIndex
,分别表示子列表的起始位置和结束位置。注意,起始位置是包含在子列表中的,而结束位置是不包含在子列表中的。
返回值是一个新的 List
对象,它将包含原始列表中从 fromIndex
(包含)到 toIndex
(不包含)的元素。
List<Integer> list = Lists.newArrayList();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
// 获取6到10的数据返回新列表,输出[6,7,8,9,10]
List<Integer> newList = list.subList(5, 10)
// 例子:结合contains使用,列表是否包含1。未截取输出true
list.contains(1)
// 例子:结合contains使用,列表是否包含1。截取后输出false
list.subList(5, 10).contains(1)
List.clear()
清空列表中的元素
List<Integer> list = Lists.newArrayList();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
// 直接清空所有元素。输出 []
list.clear()
// 例子:结合subList使用,只清空5到10的数据。输出[1,2,3,4,5]
list.subList(5, 10).clear()
Stream().limit()
限制返回的流中元素的数量
它接受一个 long
类型的参数maxSize
表示最多返回的元素数量。如果maxSize
大于或等于列表长度则不做任何改变。
List<Integer> list = Lists.newArrayList();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
// [1,2,3,4,5]
List<Integer> newList = list.stream().limit(5).collect(Collectors.toList());
List.removeAll()
删除列表中包含在指定集合中的所有元素
建议替代
List.remove()
方法做元素的删除,List.remove()
有两个重载方法,按索引和按对象删除,假设列表是[1,2,3]
,如果使用list.remove(1)
来移除列表中的元素1
是错误的,因为这种方式并不是用来按元素值来删除元素的,而是根据索引位置来删除元素的。如果删除只能将元素1
转为object
类型
List<Integer> list = Lists.newArrayList();
for (int i = 1; i <= 10; i++) {
if (i == 10) {
list.add(null);
} else {
list.add(i);
}
}
// [1,2,3,4,5,6,7,8,9]
list.removeAll(Collections.singleton(null));
// [1,2,3,4,5,6,7,8,null]
list.removeAll(Collections.singleton(9));
Collections.singletonList()
用于创建一个只包含一个元素的不可变列表,该列表不能被修改(不支持添加、删除操作)
// [A]
Collections.singletonList("A");