Stream流int存储为list
时间: 2024-06-09 15:10:17 浏览: 8
int类型的数据不能直接存储到List中,因为List是泛型集合,只能存储对象类型。但是可以将int类型的数据先转换为Integer对象,然后再存储到List中。以下是使用Stream流将int类型的数据存储为List的示例代码:
int[] numbers = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(numbers)
.boxed()
.collect(Collectors.toList());
这里首先将int数组转换为IntStream流,然后通过boxed()方法将IntStream流中的int元素转换为对应的Integer对象,最后通过collect(Collectors.toList())方法将转换后的元素收集到List中。
相关问题
Stream流中list集合怎么多字段去重
在Java 8及以上版本中,可以使用Stream流的distinct()方法对集合进行去重操作。如果要根据多个字段进行去重,可以使用Stream流的map()方法和collect()方法,结合lambda表达式进行处理。
以下是示例代码:
```java
public class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 省略getter和setter方法
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age &&
Objects.equals(name, person.name) &&
Objects.equals(gender, person.gender);
}
@Override
public int hashCode() {
return Objects.hash(name, age, gender);
}
}
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20, "male"));
personList.add(new Person("Jerry", 22, "male"));
personList.add(new Person("Lily", 20, "female"));
personList.add(new Person("Tom", 20, "male"));
personList.add(new Person("Lily", 20, "female"));
List<Person> uniquePersonList = personList.stream()
.map(person -> new Person(person.getName(), person.getAge(), person.getGender()))
.distinct()
.collect(Collectors.toList());
System.out.println(uniquePersonList);
```
在上面的示例代码中,我们定义了一个Person类,并创建了一个包含多个Person对象的列表personList。我们在Person类中实现了`equals()`和`hashCode()`方法,用于指定去重的关键字,即按照name、age、gender属性进行去重。
我们使用Stream流的map()方法将Person对象转换为新的Person对象,这样可以避免在去重时修改原有的对象。然后使用distinct()方法进行去重操作,并将结果存储在uniquePersonList中。
最后输出去重后的Person对象列表。
java stream流求和
要使用Java Stream流对元素求和,可以使用`sum()`方法。以下是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("Sum: " + sum);
}
}
```
在上述示例中,我们首先创建了一个包含整数的列表。然后,我们使用`stream()`方法将列表转换为流。接下来,我们使用`mapToInt()`方法将流中的元素映射为整数。最后,我们调用`sum()`方法对整数流中的元素求和,并将结果存储在变量`sum`中。最后,我们打印出求和结果。
以上代码的输出将是:
```
Sum: 15
```
请注意,在使用`sum()`方法之前,我们使用`mapToInt()`方法将流中的元素映射为整数。这是因为`sum()`方法仅适用于`IntStream`、`LongStream`和`DoubleStream`类型的流。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)