【发布时间】:2014-01-29 02:10:19
【问题描述】:
我有一张如下图:
Key Value
23 20
32 20 (20+20 =40 , min=23 max=32)
43 18
45 24 (24+18 =42 , since 42 >40 so here min and max will be same that is 43
47 10
56 6 (24 +10 +6 =40) so here min =45 and max = 56
49 2
47 12
如你所见,最终会有一个名为 split 的常量,其值为 40
final int SPLIT = 40; //this will be configurable as it value can be changed.
如果map的值达到40,我必须实现逻辑, 那么地图的第一个键从计算开始的位置和恰好达到 40 的键也将被选为 min 和 max,如上所述。
除此之外,如果 sum 超过 40,则需要注意。如果是这样,我们必须忽略它,并在 min 和 max 相等的情况下将先前的值本身作为 min 和 max。
请建议我如何使用 Java 和 Map 实现这一点。请各位大侠指教
我正在获取的数据不是来自数据库,而是从对象列表中的休眠条件获取的数据
我正在从 Hibernate 标准中获取一个列表,如下所示...
List<Object[]> abcObjectsList= session.createCriteria(dddObject.class)
在我以这种格式获取数据时进行检查
abcObjectsList= ArrayList<E>
elementData =Object[3]
[0] = Long ----------> value 23
[1] = Integer -------> value 20
[0] = Long ----------> value 32
[1] =Integer -------> value 20
[0] =Long ----------> value 43
[1] =Integer -------> value 18
我以同样的方式将它存储在地图中
Map<Long, Integer> result = new HashMap<Long, Integer>();
for (Object[] arr : list) {
result.put((Long) arr[0], (Integer) arr[1]);
}
所以最终地图将包含..
Key Value
23 20
32 20 (20+20 =40 , min=23 max=32)
43 18
【问题讨论】:
-
不,这不是同一个问题,请提供解决方案
-
@user1694073 你试过什么?你被困在哪里了?
-
@ZouZou 我被这个问题困住了,请您提供解决方案。
-
我已经用更好的语法和句法编辑了您的问题,以帮助读者。如果您觉得我改变了某些部分的范围或含义,请随时还原它们!
标签: java