首先,对我的英语不好的人感到抱歉,希望您能理解我
我看不到每小时如何恢复我的对象计数。 希望您能帮助我找到有关我的问题的更多信息。
我有一个任务对象,其中包含一个任务列表,每个对象都具有该属性 STRING名称和 STRING时间(hhmmss格式)
这是一个示例:
0:姓名1 102101
1:name2 102801
2:名称3 104801
3:名称4 110501
4:名称5 120301
我希望我可以做一个数组,让我计算每小时的任务数量
在此示例中,我将:
10 => 3
11 => 1
12 => 1
我不知道你是否明白我想要得到的东西:)
如果您有小曲目,我会感兴趣
谢谢你读我!
祝你晚上好
答案 0 :(得分:1)
String
键的HashMap
来反映 count <的 hour 和Integer
值/ em>(每小时的任务数)。HashMap
替换为Array
的24个项目。 Mission
类基本上,这里只需要time
属性的 getter 。如果您觉得不错,还可以添加一个getHour
,它将返回小时数,而不是整个time
字符串。
class Mission {
private String name;
private String time;
Mission(String name, String time) {
this.name = name;
this.time = time;
}
String getHour() {
// This gives us the 2 first characters into a String - aka the "hour"
return time.substring(0, 2);
}
}
HashMap
我们希望将每小时计数保留在HashMap
中。因此,我们将遍历missionsList
,对于每个项目,我们将获取其count
,然后对其进行递增。
如果hour
不在HashMap
中,我们通常会收到null
。为了以最少的样板处理问题,我们将使用getOrDefault
方法。我们可以这样称呼map.getOrDefault("10", 0)
。这将返回第10小时的任务计数,如果该计数还不存在(这意味着我们尚未将其添加到地图中),我们将收到0
而不是null
。代码将如下所示:
public static void main(String[] args) {
// This will built our list of missions
List<Mission> missionsList = Arrays.asList(
new Mission("name1", "102101"),
new Mission("name2", "102801"),
new Mission("name3", "104801"),
new Mission("name4", "110501"),
new Mission("name5", "120301")
);
// This map will keep the count of missions (value) per hour (key)
Map<String, Integer> missionsPerHour = new HashMap<>();
for (Mission mission : missionsList) {
// Let's start by getting the hour,
// this will act as the key of our map entry
String hour = mission.getHour();
// Here we get the count of the current hour (so far).
// This is the "value" of our map entry
int count = missionsPerHour.getOrDefault(mission.getHour(), 0);
// Here we increment it (by adding/replacing the entry in the map)
missionsPerHour.put(hour, count + 1);
}
// Once we have the count per hour,
// we iterate over all the keys in the map (which are the hours).
// Then we simply print the count per hour
for (String hour : missionsPerHour.keySet()) {
System.out.println(String.format(
"%s\t=>\t%d", hour, missionsPerHour.get(hour)
));
}
}