拿到list集合里边对象的一个属性
时间: 2023-09-10 17:15:03 浏览: 51
可以使用列表推导式来获取集合中每个对象的属性值,例如:
假设我们有一个包含 Person 对象的列表:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
persons = [
Person("Alice", 20),
Person("Bob", 25),
Person("Charlie", 30)
]
```
如果我们想获取所有人的年龄,可以使用以下列表推导式:
```python
ages = [p.age for p in persons]
print(ages) # 输出: [20, 25, 30]
```
这里 `[p.age for p in persons]` 表示对于 `persons` 集合中的每个元素 `p`,取出其 `age` 属性并加入到新的列表中。
相关问题
java list对象集合 获取对象某个属性组成集合
如果你想要从 List 对象集合中获取某个属性组成新的集合,可以使用 Java 8 的 Stream API 或者传统的 for 循环实现。下面分别给出这两种实现方式的示例代码。
Java 8 的 Stream API 实现方式:
```java
List<User> userList = Arrays.asList(
new User("Jack", 20),
new User("Lucy", 18),
new User("Tom", 25)
);
List<Integer> ageList = userList.stream()
.map(User::getAge)
.collect(Collectors.toList());
System.out.println(ageList); // 输出结果为 [20, 18, 25]
```
上述代码中,我们首先创建了一个 User 对象的 List 集合,然后使用 Stream API 中的 map 方法,将 List 中的每个 User 对象转换成其年龄属性,并使用 collect 方法将其转换为 List<Integer> 集合。最后通过打印输出的方式来展示转换结果。
传统的 for 循环实现方式:
```java
List<User> userList = Arrays.asList(
new User("Jack", 20),
new User("Lucy", 18),
new User("Tom", 25)
);
List<Integer> ageList = new ArrayList<>();
for (User user : userList) {
ageList.add(user.getAge());
}
System.out.println(ageList); // 输出结果为 [20, 18, 25]
```
上述代码中,我们遍历 User 对象的 List 集合,将每个 User 对象的年龄属性添加到一个新的 List<Integer> 集合中。最后通过打印输出的方式来展示转换结果。
上述示例代码中,我们使用 User 对象作为示例,你可以将其替换成你自己的对象,并使用对应的属性和方法名来实现相应的转换操作。
list集合根据某个对象的属性去重
要根据某个对象的属性去重list集合,可以按照以下步骤进行操作。
首先,我们需要自定义一个比较器(Comparator)来比较两个对象的属性是否相等。比较器的作用是根据对象的属性值确定两个对象是否相等。
其次,我们可以利用Java 8的流操作,使用distinct()方法来去除集合中的重复元素。在这个方法中,我们可以使用自定义的比较器来比较两个对象。
最后,我们将得到去重后的list集合。
下面是一个例子,假设我们有一个Person对象的list集合,每个Person对象都有一个name属性。
```
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("John"));
personList.add(new Person("Jane"));
personList.add(new Person("John")); // 添加重复元素
List<Person> distinctList = personList.stream().distinct(new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName()); // 比较name属性
}
}).toList();
System.out.println(distinctList);
}
}
```
运行这段代码,我们将得到去重后的list集合:[Person [name=Jane], Person [name=John]]。