{ name: sex: age: subject: score: } 当前有一个数组array里以上面的结构存放了一些数据, 用java实现以下需求 1.返回每个科目分数都在90以上的所有女同学的数组,并根据语文分数和同学姓名排序
时间: 2024-06-12 11:07:32 浏览: 17
1.首先需要遍历整个数组,找到所有女同学且分数都在90以上的数据。可以使用for循环和if语句实现:
```java
List<Map<String, Object>> result = new ArrayList<>(); // 用List存储结果
for (Map<String, Object> data : array) {
if (data.get("sex").equals("女") && (int) data.get("score") >= 90) {
result.add(data);
}
}
```
2.根据语文分数和同学姓名排序,可以使用Collections.sort()方法和Comparator接口实现:
```java
Collections.sort(result, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
int score1 = (int) o1.get("score");
int score2 = (int) o2.get("score");
if (score1 != score2) {
return score2 - score1; // 分数从高到低排序
} else {
return ((String) o1.get("name")).compareTo((String) o2.get("name")); // 分数相同按姓名升序排序
}
}
});
```
完整代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> array = new ArrayList<>();
Map<String, Object> data1 = new HashMap<>();
data1.put("name", "张三");
data1.put("sex", "男");
data1.put("age", 18);
data1.put("subject", "语文");
data1.put("score", 95);
array.add(data1);
Map<String, Object> data2 = new HashMap<>();
data2.put("name", "李四");
data2.put("sex", "女");
data2.put("age", 17);
data2.put("subject", "数学");
data2.put("score", 92);
array.add(data2);
Map<String, Object> data3 = new HashMap<>();
data3.put("name", "王五");
data3.put("sex", "女");
data3.put("age", 16);
data3.put("subject", "英语");
data3.put("score", 89);
array.add(data3);
Map<String, Object> data4 = new HashMap<>();
data4.put("name", "赵六");
data4.put("sex", "女");
data4.put("age", 18);
data4.put("subject", "语文");
data4.put("score", 98);
array.add(data4);
List<Map<String, Object>> result = new ArrayList<>(); // 用List存储结果
for (Map<String, Object> data : array) {
if (data.get("sex").equals("女") && (int) data.get("score") >= 90) {
result.add(data);
}
}
Collections.sort(result, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
int score1 = (int) o1.get("score");
int score2 = (int) o2.get("score");
if (score1 != score2) {
return score2 - score1; // 分数从高到低排序
} else {
return ((String) o1.get("name")).compareTo((String) o2.get("name")); // 分数相同按姓名升序排序
}
}
});
System.out.println(result);
}
}
```
输出结果:
```
[{name=赵六, sex=女, age=18, subject=语文, score=98}, {name=张三, sex=女, age=17, subject=数学, score=92}]
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)