这是Java环境下的编程技术问题。
问题:我们有所有需要唯一的字符串键。集合的实现是map和arraylist的组合,它允许将集合用作map或arraylist(如果您感兴趣,可以使用jfreechart的defaultpiedataset)。如果我们有一个数据块,我们希望它本身就是关键。如果我们有用其他键分隔的倍数,我们需要数据加上一个分隔符和一个递增的数字。
例如:
有两个的数据
Bob
条目,然后是
Albert
想要钥匙吗
["Bob", "Albert"]
.
数据看起来像
艾伯特
和
鲍勃
用两
鲍勃
条目与
艾伯特
中间有钥匙
["Bob : 1", "Albert", "Bob : 2"]
.
这是我们迄今为止的准则:
String dataKey = "";
DefaultPieDataset ringDataset = new DefaultPieDataset();
for(String thisData: dataList)
{
int dataValue;
if(dataKey.equals(thisData))
{
dataValue= ringDataset.getValue(dataKey).intValue() + 1;
}else
{
dataKey= thisData;
if(ringDataset.getKeys().contains(dataKey) || ringDataset.getKeys().contains(dataKey+ " : 1"))
{
if(ringDataset.getKeys().contains(dataKey))
{
int existingKeyIndex = ringDataset.getIndex(dataKey);
int existingKeyValue = ringDataset.getValue(dataKey).intValue();
ringDataset.remove(dataKey);
ringDataset.insertValue(existingKeyIndex, dataKey+ " : 1", existingKeyValue);
}
int counter = 2;
do{
dataKey= thisData + " : " + counter;
counter ++;
}while(ringDataset.getKeys().contains(dataKey));
}
dataValue= 1;
}
ringDataset.setValue(dataKey, dataValue);
}
目前,代码会针对每个副本附加“:”,以便取代
Bob : 2
它使
Bob : 1 : 2
另外一个挑战是,我不能保证名称没有分隔符(示例中的冒号)。
此外,对于任何添加的库都需要大量繁琐的繁琐程序,因此只需要一个Java API解决方案。
谢谢你帮我做这个特别的脑筋扭动手术,
亚当
编辑:为了进一步澄清代码,items值基于数据类型在一行中出现的次数。所以在第一个例子中,
鲍勃
值为2且
艾伯特
1.在第二个示例中,所有键的值都为1。