将值添加到存储在散列表中的列表中的新列表时遇到问题 - Java
我一直在寻找一种方法来做到这一点,它让我生气了!将值添加到存储在散列表中的列表中的新列表时遇到问题 - Java
我试图做的是如下:
我有一个HashMap:
qualifiedCompetitors = new HashMap<String, List<String>>();
我分配到HashMap中的值是:
String[] events = {"Helicopter", "Amphibious",
"4x4", "Fire Engine"};
String[][] competitors =
{
{"Greg", "Will", "Fleur", "Bill", "Bella", "Sally", "Olive", "Sal", "Dora", "Chas"},
{"Yuri", "Abe", "Tim", "Fleur", "Bonnie", "Vera", "Ed", "Dan", "Jill", "Rose", "Zoe"},
{"Tim", "Fleur", "Will", "Bill", "Bella", "Dan", "Jill", "Rose", "Greg", "Abe", "Sally", "Yuri", "Olive", "Sal", "Jim"},
{"Jill", "Rose", "Greg", "Abe", "Bonnie", "Vera", "Ed", "Zoe", "Ben", "Freda", "Chuck", "Fred"}
};
的关键刺痛是事件的名称,列表是竞争对手的名单。我想建立一个所有竞争对手的新名单。
所以,我已经尝试过各种东西,如:
ListOfAllqualifiedCompetitors = new ArrayList(qualifiedCompetitors.values());
,然后通过HashMap的迭代:
Collection allCompetitors = qualifiedCompetitors.values();
System.out.println("Values of Collection created from Hashtable are :");
//iterate through the collection
Iterator itr = allDrivers.iterator();
while(itr.hasNext())
System.out.println(itr.next());
要查看VALES我得到的,这是很好的,但我不能再加入他们新的名单?我知道我错过了明显的任何建议?
什么你说我觉得是,你有地图String
到List<String>
并希望所有的List<String>
的积聚成一个长长的名单。如果是这样的话:
final Map<String, List<String>> eventsToCompetitors;
final List<String> allCompetitors;
eventsToCompetitors = ...
allCompetitors = new ArrayList<String>();
for (Collection<String> competitors : eventsToCompetitors.values())
{
allCompetitors.addAll(competitors);
}
明白了 - 现在变得更有意义了......干杯 – damagedgoods 2012-04-18 08:05:57
然后我使用这个新列表来创建一个treeset,因为这样会删除重复项并对它们进行排序,会更有意义首先创建一个treeset并填充它而不是列表? – damagedgoods 2012-04-18 08:16:37
@damagedgoods,这是什么设置是最后的。如果他们不删除重复项目,他们就不会太好。虽然除非你有理由,使用HashSet而不是TreeSet。 – Neil 2012-04-18 08:48:47
List<String> allCompetitors = new ArrayList<String>();
for(Set<String> competitors : qualifiedCompetitors.values()) {
allCompetitors.addAll(competitors);
}
这是什么意思?
是 - 如果我将每个设置从
*为什么*你不能将它们添加到列表中?哪些代码不起作用,以及*为什么*不起作用? – 2012-04-18 07:52:32
所以如果我尝试: ListOfAllqualifiedCompetitors = new ArrayList(qualifiedCompetitors.values()); 我无法编译(找不到符号)。 如果尝试使用类似上面的方法进行迭代,我会将每个值作为不兼容的类型返回。 – damagedgoods 2012-04-18 07:57:37
你想要所有竞争者的清单还是竞争者清单的清单?对于前者,请参阅下面的答案... – 2012-04-18 07:59:32