List的stream流操作可以使用Java 8的Stream API,它提供了许多方便的方法来对List进行流操作,例如:
- 过滤元素
可以使用filter()
方法过滤掉不符合条件的元素,例如:
List<String> list = Arrays.asList("apple", "banana", "cherry", "orange");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
上述代码中,filter()
方法会过滤掉不以字母"a"开头的元素,最终返回一个新的List,其中只包含符合条件的元素。
- 映射元素
可以使用map()
方法将List中的元素按照指定的规则进行映射,例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
List<Integer> mappedList = list.stream().map(i -> i * 2).collect(Collectors.toList());
上述代码中,map()
方法将List中的每个元素乘以2,最终返回一个新的List,其中包含映射后的元素。
- 排序元素
可以使用sorted()
方法对List中的元素进行排序,例如:
List<Integer> list = Arrays.asList(3, 1, 4, 2);
List<Integer> sortedList = list.stream().sorted().collect(Collectors.toList());
上述代码中,sorted()
方法会对List中的元素进行升序排序,最终返回一个新的List,其中包含排好序的元素。
- 统计元素
可以使用count()
方法统计List中的元素个数,例如:
List<String> list = Arrays.asList("apple", "banana", "cherry", "orange");
long count = list.stream().count();
上述代码中,count()
方法会统计List中的元素个数,最终返回一个long类型的值。
- 匹配元素
可以使用anyMatch()
、allMatch()
和noneMatch()
方法匹配List中的元素,例如:
List<String> list = Arrays.asList("apple", "banana", "cherry", "orange");
boolean anyMatch = list.stream().anyMatch(s -> s.contains("a"));
boolean allMatch = list.stream().allMatch(s -> s.length() > 3);
boolean noneMatch = list.stream().noneMatch(s -> s.startsWith("z"));
上述代码中,anyMatch()
方法会判断List中是否存在以字母"a"开头的元素,返回一个boolean类型的值;allMatch()
方法会判断List中的所有元素是否都长度大于3,返回一个boolean类型的值;noneMatch()
方法会判断List中是否不存在以字母"z"开头的元素,返回一个boolean类型的值。
总之,Java 8的Stream API提供了非常丰富的方法来对List进行流操作,可以大大简化代码的编写。
在JavaScript中,有三种常用的方式可以遍历Map:
- 使用Map的entries()方法配合for...of循环遍历Map的键值对:
let myMap = new Map();
myMap.set(0, 'foo');
myMap.set(1, 'bar');
myMap.set(2, 'baz');
for(let [key, value] of myMap.entries()) {
console.log(key, value);
}
输出:
0 "foo"
1 "bar"
2 "baz"
- 使用Map的forEach()方法遍历Map的键值对:
let myMap = new Map();
myMap.set(0, 'foo');
myMap.set(1, 'bar');
myMap.set(2, 'baz');
myMap.forEach(function(value, key) {
console.log(key, value);
})
输出:
0 "foo"
1 "bar"
2 "baz"
- 使用Map的keys()和values()方法分别获取Map的keys和values,并用for...of循环遍历:
let myMap = new Map();
myMap.set(0, 'foo');
myMap.set(1, 'bar');
myMap.set(2, 'baz');
for(let key of myMap.keys()) {
console.log(key);
}
for(let value of myMap.values()) {
console.log(value);
}
输出:
0
1
2
foo
bar
baz