gpt4 book ai didi

java - 计算 List 中出现的次数

转载 作者:行者123 更新时间:2023-11-29 05:34:06 25 4
gpt4 key购买 nike

我正在创建一个计算学生成绩的小型应用程序。需要两个 List<Integer>在一个方法中。

如果我的list例如,包含 8 个项目; {52,62,65,65,72,72,75,75}我想找到一种方法来计算 list并找到相同十分之一内的项目(例如 30、40、50、60、70)。所以在这种情况下,4 个项目将在 70 的范围内然后能够存储它(称为上限)。这样做的目的是,如果 4 个项目处于上限,则学生的总体成绩会更高。

我的问题是,我怎样才能做到这一点?我已经看到我可以使用某种 map但我不确定这是否是实现它的最佳方式。

最佳答案

Iterate over your list and put entries into Map where key is a number and value is a count.

用一点伪代码扩展之前的答案...

Map<Integer, Integer> gradeMap = new HashMap<Integer, Integer>();
int roundedGrade = (grade / 10) * 10;
// Where "incrementMap" is a function you define...
// The purpose of the method is to increment the value (counter) in the map for a particular key
// If the key doesn't exist yet, you want to add it with an initial count of "1"
// Jérémy Dutheil's answer is a good example of this method, but I can include the actual ones that I use since it is a generic library method (see below)
incrementMap(gradeMap, roundedGrade);

// To find upper boundary
int upperBoundary = 0;
for(Map.entry<Integer,Integer> entry : gradeMaps.getEntries())
{
int count = entry.getValue();
int tenth = entry.getKey();
// determine if this is the upper boundary
}

这是 incrementMap 的示例实现:

public static <T> void incrementMap(Map<T, Integer> map, T key)
{
incrementMap(map, key, 1);
}

public static <T> void incrementMap(Map<T, Integer> map, T key, int amountToIncrement)
{
assert map != null;
int currentValue = map.containsKey(key) ? map.get(key) : 0;
map.put(key, currentValue + amountToIncrement);
}

我可能会把我们拉入正题……我包含泛型的唯一原因是因为我想为您提供我在我的库中发现有用的实际代码,而不仅仅是伪代码。如果您想使其更易于理解,请将每次出现的“T”替换为“Integer”。的目的是允许您对具有任何类型“键”的 Map 使用相同的方法,只要“值”是 Integer 类型即可。它不必特别是“T”,这只是您将从大多数教程中获得的示例。 (例如:http://www.javacodegeeks.com/2011/04/java-generics-quick-tutorial.html)

例如,看看这个使用两种不同泛型类型的实用方法:

/**
* Convenience method to create a map containing a single entry.
* @param pKey the entry key
* @param pValue the entry value
* @param <K> the key type
* @param <V> the value type
* @return a map with a single entry
*/
public static <K, V> Map<K, V> mapOfOne(K pKey, V pValue)
{
Map<K, V> target = new HashMap<K, V>();
target.put(pKey, pValue);
return target;
}

关于java - 计算 List<Integer> 中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com