java集合怎么根据字段名获取数据
时间: 2024-05-14 09:08:54 浏览: 129
Java集合中可以根据字段名获取数据的方法有很多,以下是其中两种常用的方法:
1.使用Map集合
可以将每个对象的属性名和属性值存储在一个Map中,然后将这个Map作为元素存储在List中。这样,就可以通过遍历List,再通过Map的get方法根据属性名获取属性值。
举个例子,假设有一个User类,其中包含id和name两个属性,现在有一个List<User> users,我们可以将其转换为List<Map<String, Object>>,然后根据属性名获取属性值,代码如下:
```java
List<Map<String, Object>> list = new ArrayList<>();
for (User user : users) {
Map<String, Object> map = new HashMap<>();
map.put("id", user.getId());
map.put("name", user.getName());
list.add(map);
}
// 根据属性名获取属性值
for (Map<String, Object> map : list) {
System.out.println(map.get("id"));
System.out.println(map.get("name"));
}
```
2.使用Comparator实现定制比较
如果要根据某个属性排序,可以使用Comparator实现定制比较。具体来说,可以新建一个TreeMap,并传入一个Comparator对象,该对象的compare方法根据指定的属性进行比较。
举个例子,假设有一个Student类,其中包含stuNo和name两个属性,现在有一个List<Student> students,我们可以根据stuNo进行排序,代码如下:
```java
// 新建集合 TreeMap
TreeMap<Student, String> treemap = new TreeMap<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int n1 = o1.getStuNo() - o2.getStuNo();
return n1;// 只根据学号比较
}
});
// 将List中的元素添加到TreeMap中
for (Student student : students) {
treemap.put(student, "");
}
// 遍历TreeMap,即可根据stuNo进行排序
for (Student student : treemap.keySet()) {
System.out.println(student.getStuNo());
System.out.println(student.getName());
}
```
阅读全文