用hashmap类如何去最大值和最小值
时间: 2024-04-29 19:22:21 浏览: 70
HashMap类是一个键值对存储的数据结构,不支持直接查找最大值和最小值操作。但可以通过遍历Map的方式实现查找最大值和最小值:
1. 查找最大值
```
HashMap<String, Integer> map = new HashMap<>();
// 假设map中存储了若干键值对
int maxVal = Integer.MIN_VALUE;
for (Integer val : map.values()) {
if (val > maxVal) {
maxVal = val;
}
}
System.out.println("最大值为:" + maxVal);
```
2. 查找最小值
```
HashMap<String, Integer> map = new HashMap<>();
// 假设map中存储了若干键值对
int minVal = Integer.MAX_VALUE;
for (Integer val : map.values()) {
if (val < minVal) {
minVal = val;
}
}
System.out.println("最小值为:" + minVal);
```
上述代码中,我们使用了Java中的Integer类的MAX_VALUE和MIN_VALUE常量分别表示整型的最大值和最小值。遍历Map的values()方法可以获取所有的值,然后在循环中找到最大值和最小值。
相关问题
编写一个程序,用Map实现学生成绩单的存储和查询,并且对成绩进行排序,存储到TreeSet中,求出平均成绩,最大值,最小值,java
在Java中,你可以使用`HashMap`来存储学生的姓名和成绩,然后利用`TreeSet`进行排序操作。以下是简单的示例代码:
```java
import java.util.*;
class Student {
String name;
double score;
public Student(String name, double score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
}
public class GradeBook {
private Map<String, Double> gradeMap; // 存储成绩
private TreeSet<Student> sortedStudents; // 存储并排序学生
public GradeBook() {
gradeMap = new HashMap<>();
sortedStudents = new TreeSet<>((a, b) -> a.score - b.score); // 按照成绩降序排序
}
public void addScore(String studentName, double score) {
gradeMap.put(studentName, score);
sortedStudents.add(new Student(studentName, score));
}
public double getAverageScore() {
if (gradeMap.isEmpty()) {
return 0.0;
}
double totalScore = 0.0;
for (double score : gradeMap.values()) {
totalScore += score;
}
return totalScore / gradeMap.size();
}
public double getMaxScore() {
if (sortedStudents.isEmpty()) {
return 0.0;
}
return sortedStudents.last().score;
}
public double getMinScore() {
if (sortedStudents.isEmpty()) {
return 0.0;
}
return sortedStudents.first().score;
}
public void printGradeSummary() {
System.out.println("Average Score: " + getAverageScore());
System.out.println("Max Score: " + getMaxScore());
System.out.println("Min Score: " + getMinScore());
// 打印所有学生及其成绩
System.out.println("Sorted Students:");
for (Student student : sortedStudents) {
System.out.println(student);
}
}
public static void main(String[] args) {
GradeBook book = new GradeBook();
book.addScore("Alice", 90);
book.addScore("Bob", 85);
book.addScore("Charlie", 95);
book.printGradeSummary();
}
}
```
这个程序创建了一个`GradeBook`类,其中包含一个`Map`用于存储成绩,一个`TreeSet`用于存储按成绩排序的学生。添加成绩、获取平均分、最大分和最小分以及打印统计信息都在该类中实现。
商家每月的盈利额存储在数组中 使用JSP声明定义获取数组中的最大值和对应的月份的方法Map<lnteger,Double> getMax(double[]profits) 使用JSP声明定义获取数组中的最小值和对应的月份的方法Map<lnteger,Double> getMin(double[] profits) 通过JSP表达式显示计算结果
好的,您可以使用以下JSP代码实现您的需求:
```jsp
<%-- 声明定义获取数组中的最大值和对应的月份的方法 --%>
<%!
public Map<Integer, Double> getMax(double[] profits) {
Map<Integer, Double> maxMap = new HashMap<>();
double maxProfit = Double.MIN_VALUE;
for (int i = 0; i < profits.length; i++) {
if (profits[i] > maxProfit) {
maxProfit = profits[i];
maxMap.clear();
maxMap.put(i + 1, maxProfit);
} else if (profits[i] == maxProfit) {
maxMap.put(i + 1, maxProfit);
}
}
return maxMap;
}
%>
<%-- 声明定义获取数组中的最小值和对应的月份的方法 --%>
<%!
public Map<Integer, Double> getMin(double[] profits) {
Map<Integer, Double> minMap = new HashMap<>();
double minProfit = Double.MAX_VALUE;
for (int i = 0; i < profits.length; i++) {
if (profits[i] < minProfit) {
minProfit = profits[i];
minMap.clear();
minMap.put(i + 1, minProfit);
} else if (profits[i] == minProfit) {
minMap.put(i + 1, minProfit);
}
}
return minMap;
}
%>
<%-- 在JSP页面中调用方法并显示计算结果 --%>
<%
double[] profits = {1000.0, 2000.0, 1500.0, 3000.0, 2500.0};
Map<Integer, Double> maxMap = getMax(profits);
Map<Integer, Double> minMap = getMin(profits);
%>
<p>盈利额最大值: <%= maxMap.values().iterator().next() %>,对应月份: <%= maxMap.keySet() %></p>
<p>盈利额最小值: <%= minMap.values().iterator().next() %>,对应月份: <%= minMap.keySet() %></p>
```
在上述代码中,我们先声明了两个方法 `getMax` 和 `getMin`,用于获取盈利额数组中的最大值和最小值以及对应的月份。然后在 JSP 页面中调用这两个方法,并使用 JSP 表达式将计算结果显示在页面中。
需要注意的是,为了方便演示,我在 JSP 页面中直接定义了一个数组 `profits` 来存储盈利额数据,实际使用时您需要将其替换为您自己的数据源。
阅读全文