List<Integer> persons=new ArrayList<>();是什么意思
时间: 2024-03-01 21:49:21 浏览: 109
这行代码定义了一个泛型为 `Integer` 的 `List` 类型的变量 `persons`,并初始化为一个空的 `ArrayList` 对象。`List` 是 Java 集合框架中的一种接口,它表示一个元素有序、可重复的集合。`ArrayList` 是 `List` 接口的一个实现类,它基于数组实现,支持动态扩容。在这里,`List<Integer>` 表示这个集合中只能存储整型数据,也就是说,只能往 `persons` 中添加 `Integer` 类型的元素。这个变量的命名 `persons` 可以理解为这个集合中存储的是人员信息,每个人员信息用一个整数来表示。
相关问题
怎么把List<Map<String,Object>>转换成List<对象>
你可以通过循环遍历List<Map<String,Object>>,然后将每个Map中的键值对映射为一个对象的属性,最终将这些对象添加到一个新的List中返回。以下是一个简单的示例代码:
假设有一个Person类,具有name和age两个属性:
```java
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
// getter和setter方法
}
```
现在有一个List<Map<String,Object>>,包含多个人的信息:
```java
List<Map<String,Object>> personMaps = new ArrayList<>();
Map<String,Object> person1 = new HashMap<>();
person1.put("name", "张三");
person1.put("age", 20);
personMaps.add(person1);
Map<String,Object> person2 = new HashMap<>();
person2.put("name", "李四");
person2.put("age", 25);
personMaps.add(person2);
```
你可以将这个List转换为List<Person>,代码如下:
```java
List<Person> persons = new ArrayList<>();
for (Map<String,Object> personMap : personMaps) {
String name = (String) personMap.get("name");
Integer age = (Integer) personMap.get("age");
Person person = new Person(name, age);
persons.add(person);
}
```
现在,persons中存储了两个Person对象,分别表示“张三(20岁)”和“李四(25岁)”。
LIst<T> 根据其中的一个属性分组Stream
可以使用 Java 8 的 Stream API 来对 List<T> 进行分组操作,具体实现方法如下:
1. 首先需要定义一个用于分组的属性,假设该属性为 objProperty。
2. 利用 Stream 的 collect(Collectors.groupingBy()) 方法对 List 进行分组,其中 Collectors.groupingBy() 方法的返回值为 Map<K, List<T>>,其中 K 表示分组的键,List<T> 表示分组的值。
代码示例:
```
Map<Object, List<T>> groups = list.stream().collect(Collectors.groupingBy(T::getObjProperty));
```
其中 T::getObjProperty 表示获取 T 对象的 objProperty 属性值。
3. 最终得到的 groups 就是按照 objProperty 属性分组后的结果。
完整代码示例:
```
public class Test {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 20));
persons.add(new Person("Jerry", 25));
persons.add(new Person("Lucy", 20));
persons.add(new Person("Lily", 25));
Map<Integer, List<Person>> groups = persons.stream().collect(Collectors.groupingBy(Person::getAge));
System.out.println(groups);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
输出结果为:
```
{20=[Person{name='Tom', age=20}, Person{name='Lucy', age=20}], 25=[Person{name='Jerry', age=25}, Person{name='Lily', age=25}]}
```
可以看到,按照年龄属性分组后,年龄为 20 的有 Tom 和 Lucy 两个人,年龄为 25 的有 Jerry 和 Lily 两个人。
阅读全文