【发布时间】:2013-12-20 09:53:07
【问题描述】:
我的 java 程序中有一些字符串的字符串列表,如下所示:
List<String> input = new ArrayList<String>();
input.add("2013-07-31,A,47");
input.add("2013-06-28,A,52");
input.add("2013-05-31,A,63");
input.add("2013-07-31,B,47");
input.add("2013-06-28,B,54");
input.add("2013-05-31,B,91");
input.add("2013-07-31,C,78");
input.add("2013-06-28,C,24");
input.add("2013-07-31,D,99");
input.add("2013-05-31,D,82");
这里在每个字符串中,逗号分隔的第一个标记代表日期,第二个标记是产品名称,第三个标记是价格。
我想使用上面的列表生成下表格式的 excel 报告:
Prod | Price
---------------------------------------------
XXX | M1 M2 M3
---------------------------------------------
A | 47 52 63
B | 47 54 91
C | 78 24 00
D | 99 00 82
---------------------------------------------
其中 M1 是 2013 年 7 月 31 日,M2 是 2013 年 6 月 28 日,而 M3 是 2013 年 5 月 31 日。
为了实现这一点,我的输出集合应该是一个包含成员字符串的字符串列表,如下所示:
A, 47, 52, 63
B, 47, 54, 91
C, 78, 24, 00
D, 99, 00, 82
请注意,在输入字符串中,日期不存在值,例如产品 C 为 2013-05-31,产品 D 为 2013-06-28,输出字符串中的值应默认为 00。
因此,在输出字符串中,这样的缺失值被视为 00。
如何迭代我的输入集合,该集合具有产品的按日期垂直值,以获得输出集合,它是 3 个日期的产品水平值?
感谢阅读!
【问题讨论】:
-
拆分字符串并创建产品对象,这样会容易得多。
-
@peeskillet:为第一个字符串创建迭代器.. :) 我应该粘贴它吗?这不是作业问题...
-
您想从新列表中完全省略日期吗?
-
@peeskillet:是的。输入列表首先维护具有最高日期的顺序。我已经能够以这种方式获得输入。所以我们可以轻松地假设在输出字符串中,第一个值是第一个日期,依此类推。但是在创建时,我们必须看到如果没有日期,则该值应取为 00。