【发布时间】:2019-08-21 23:38:10
【问题描述】:
我有一个包含 3 个条目的 TreeMap,全部来自单独的 ArrayList。
我使用以下代码:
Map<String, List<String>> mapOne = new TreeMap<String, List<String>>();
List<String> listFour = Arrays.asList("");
ArrayList<String> listOne = new ArrayList<>();
listOne.add("Writer");
listOne.add("Actor");
listOne.add("Politician");
listOne.add("Dancer");
ArrayList<String> listTwo = new ArrayList<>();
listTwo.add("James");
listTwo.add("Robert");
listTwo.add("Tereza");
listTwo.add("John");
ArrayList<String> listThree = new ArrayList<>();
listThree.add("Joyce");
listThree.add("Redford");
listThree.add("May");
listThree.add("Travolta");
for (int i = 0; i < listOne.size(); i++) {
String stringOne = listOne.get(i);
String stringTwo = listTwo.get(i);
String stringThree = listThree.get(i);
listFour = Arrays.asList(stringTwo, stringThree);
mapOne.put(stringOne, listFour);
}
现在我想从排序列表中获取各个字符串值。像这样:
for (Map.Entry<String, List<String>> entry : mapOne.entrySet()) {
String key = entry.getKey();
for (String value : entry.getValue()) {
System.out.println(value);
}
}
上面的代码打印了一个类似
的列表{Robert Redford , John Travolta , Tereza May , James Joyce}
是否有可能以某种方式遍历列表以获得单独的列表,一个带有名字,另一个带有姓氏?
listOne = {Robert , John , Tereza, James}
listTwo = {Redford, Travolta, May, Joyce}
或者我应该使用完全不同的方法吗?
整个事情开始于需要对一个 ArrayList 进行排序并相应地对另一个进行排序。一开始看起来微不足道的事情,结果却是一个真正的挑战。
我是一个爱好程序员,所以那里的专业人士请多多包涵。
【问题讨论】:
-
整个事情开始于需要对一个 ArrayList 进行排序并相应地对另一个进行排序。:如果您使用对象代替,整个事情,包括这种排序,将是微不足道的使用并行列表。使用单个 List
,其中 Person 是具有名字、姓氏和职业的类。然后,您可以按名字、姓氏或职业对人员进行排序。 -
感谢您提及该方法。我之前研究过这个想法,但在实施时遇到了困难。您是否碰巧有更多详细信息,链接或sn-p?
-
list.sort(Comparator.comparing(Person::getFirstName))。这会按名字对人员列表进行排序。你问的是这个吗? -
我希望了解更多有关使用公共类的详细信息,例如:Person { public String professional;公共字符串名称;公共字符串姓氏; } 在我的代码中。我确实知道我的查询听起来很业余,但我非常愿意学习一些东西。
-
@rainer 我用自定义比较器的示例更新了答案。抱歉 JB Nizet,告诉我您是否希望我删除该部分以便您发布答案。
标签: java list arraylist iteration treemap