Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java数组列表的切分_Java_List_Arraylist - Fatal编程技术网

java数组列表的切分

java数组列表的切分,java,list,arraylist,Java,List,Arraylist,我正试图为下面的问题编写Java代码,但我无法找到一种优化的方法来解决这个问题 我有一个关于咖啡时间和消耗量的列表,如下所示。我想计算每个小时的咖啡消费量,如果某个小时没有咖啡消费量,那么接下来的几个小时第一个条目将是该小时的总消费量 例如: 我有以下数组列表 Time consumption of coffee 2:15 5 cups 2:30 6 cups 2:45 7 cups 3:05

我正试图为下面的问题编写Java代码,但我无法找到一种优化的方法来解决这个问题

我有一个关于咖啡时间和消耗量的列表,如下所示。我想计算每个小时的咖啡消费量,如果某个小时没有咖啡消费量,那么接下来的几个小时第一个条目将是该小时的总消费量

例如:

我有以下数组列表

Time        consumption of coffee
2:15                5 cups
2:30                6 cups
2:45                7 cups
3:05                2 cups
3:45                6 cups
5:05                1 cups
5:30                2 cups
7:15                1 cup
所以我想计算第2小时的总消耗量,在这种情况下,从2:00到3:00总共消耗18杯。同样,从3:00到4:00总共消耗8杯。因为4:00到5:00之间没有记录,所以这种情况下的消耗量应该是5:05时消耗的咖啡量,即1杯。我希望在7点之前得到结果。因为我们在6:00-7:00没有任何东西,那么它将是1杯,在7:15是有价值的

所以我想要一个总消耗量的最终结果,从2:00到7:00,每小时作为数组列表分发,如下所示

obj1 = T<2:00,3:00,18>
obj2 = T<3:00,4:00,8>
obj3 = T<4:00,5:00,1>
obj4 = T<5:00,6:00,3>
obj5 = T<6:00,7:00,1>

finalList = <obj1,obj2,obj3,obj4,obj5>
obj1=T
obj2=T
obj3=T
obj4=T
obj5=T
终结者=

我不知道如何以每小时一次的方式切掉列表,并查看下一个值

我完全搞不懂用下一个小时的第一个值填充一个空小时的逻辑。但无论如何我都要试一试

我的方法假设您的输入数据是按时间顺序从早到晚排列的

定义一个包含两个成员的
CoffeeConsumption
类,并为两个值定义
Integer

创建一个
映射
,可能是一个如
树映射
。键的类型为
Integer
,表示一天中从0到23的小时数。该值的类型为
Set
,可能是
SortedSet
,例如
TreeSet
,用于存储上面定义的自定义对象

对于每个自定义对象,获取其
LocalTime
并调用。使用该小时数在地图中查找匹配的键,检索集合,然后添加项目

要获取总数,请循环地图,然后循环每个集合。要保存总计,请创建一个新的SortedMap,其中Integer作为一天中小时的键,Integer作为小时消耗的杯子总数的值

请注意,没有必要像您在问题中所显示的那样明确地保存小时结束时间。您始终可以计算该值:call
LocalTime::plusHours(1)


要支持将第一个项目移动到前一个小时(如果为空)功能,请遵循我刚才在该连字符标题中概述的逻辑。将咖啡对象添加到地图中时,如果该小时没有放置现有的关键点,请先从小时中减去一个,然后在地图中查找减去的数字作为关键点。如果减法键在地图中不存在,则将其放置,创建一个新的空集,用于存放咖啡对象,否则咖啡对象将进入其自身的时间。警告:此功能有一股难闻的气味,表明您的设计有问题或需求被误解。

如果您发布您拥有的代码,可能会更容易提供帮助。如果(在您的示例中)您使用的是
3:45->6杯;5:55->8杯;7:15->1杯
?您是否会在
4:00-5:00
时数8杯,在
5:00-6:00
时也数8杯?这似乎有点扭曲。因此,如果当前时间范围内没有咖啡,我们将进入下一个间隔?我们是否假设每15分钟在数组列表中有一个内存插槽?如果是这样的话,只需创建一个列表并添加一个变量sum,该变量sum是每个插槽中前一个列表中的4个值的一组。