我有两个实体类:A和B. A有B个实体,我有Map
以下列格式定义:Map<A, List<B>
。
我想使用以下代码将所有地图数据添加到DefaultCategoryDataset
。例如,如果有5 A且每个A有4 B,我想要25个行键。 (实体编号*(每个A中的entityNumber + B实体编号)。存储A类的Row键必须是相同的宽度;存储B实体的所有其他行必须具有相同的宽度。为了成功,我给了添加A行键((double)1 /(1 + bResultList .size())时的相同值,并在添加A行键时给出较小的值((double)1 /(1 + bResultList .size()+ 6)。
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
/** for each workpoint */
for (A aResult : map.keySet()) {
List<B> bResultList = map.get(aResult);
dataset.addValue(
(double) 1 / (1 + bResultList.size()),
"WorkPoint " + aResult.getTimeStep(),
"WP T=" + aResult.getTimeStep());
/** for each contingency result */
for (B bResult : bResultList) {
dataset.addValue(
(double) 1 / (1 + bResultList.size() + 6),
bResult.getName(),
"WP T=" + aResult.getTimeStep());
}
}
但是当我将所有地图数据添加到数据集时,不存储所有行键。当我调试时,数据集只有9行。 (A1,B1,B2,B3,B4,A2,A3,A4,A5)只有第一个A实体的B个实体被存储为行密钥。其他A实体的其他B实体不存储在数据库中。
但是当我显示图形时,所有数据都以图形显示,但顺序错误。 订单如下。
A1-B1-B2-B3-B4
B1-B2-B3-B4-A2
B1-B2-B3-B4-A3
B1-B2-B3-B4-A4
B1-B2-B3-B4-A5
我希望显示
A1-B1-B2-B3-B4
A2-B1-B2-B3-B4
A3-B1-B2-B3-B4
A4-B1-B2-B3-B4
A5-B1-B2-B3-B4
答案 0 :(得分:1)
没有你的sscce问题不明显。将您的数据集与具有不同系列(行)和类别(列)键的典型CategoryDataset
(例如this one)进行比较可能会有所帮助。此外,添加CategoryItemLabelGenerator
可能有助于调试。
renderer.setBaseItemLabelGenerator(
new StandardCategoryItemLabelGenerator(
"{0} {1} {2}", NumberFormat.getInstance()));
renderer.setBaseItemLabelsVisible(true);