Java 按值和键显示树形图
我正在使用Map.entrySet()显示当前按键排序的树状图。但是,我希望显示按值和键排序的内容。这可能吗?如果是的话,我该怎么办 编辑:重新措辞:Java 按值和键显示树形图,java,treemap,Java,Treemap,我正在使用Map.entrySet()显示当前按键排序的树状图。但是,我希望显示按值和键排序的内容。这可能吗?如果是的话,我该怎么办 编辑:重新措辞: 我目前正在显示一个按键排序的树状图。我最初希望按值排序显示,但如果值相同,我希望按升序显示键。我不知道您想要实现什么-树状图中的键是唯一的,因此如果按键排序内容,则按值排序没有意义。如果您希望有两个列表,一个按键排序,另一个按值排序,您可以使用两个树形图或使用特殊容器,例如。使用比较器对地图中的条目对象进行排序 public class MyCo
我目前正在显示一个按键排序的树状图。我最初希望按值排序显示,但如果值相同,我希望按升序显示键。我不知道您想要实现什么-树状图中的键是唯一的,因此如果按键排序内容,则按值排序没有意义。如果您希望有两个列表,一个按键排序,另一个按值排序,您可以使用两个树形图或使用特殊容器,例如。使用比较器对地图中的条目对象进行排序
public class MyComparator implements Comparator<Entry<String, String>> {
@Override
public int compare(Entry<String, String> left, Entry<String, String> right) {
int valueComp = left.getValue().compareTo(right.getValue());
if (valueComp != 0)
return valueComp;
int keyComp = left.getKey().compareTo(right.getKey());
return keyComp;
}
}
@Test
public void testSorting() throws Exception {
Map<String, String> tree = new TreeMap<String, String>();
tree.put("D", "A");
tree.put("A", "A");
tree.put("F", "C");
tree.put("E", "B");
tree.put("C", "A");
tree.put("B", "B");
Set<Entry<String, String>> entrySet = tree.entrySet();
Comparator<? super Entry<String, String>> comparator = new MyComparator();
TreeSet<Entry<String, String>> sorted = new TreeSet<Entry<String, String>>(comparator);
sorted.addAll(entrySet);
for (Entry<String, String> entry : sorted) {
System.out.println(entry);
}
}
我希望输出是按值排序的树映射,但值并不都是唯一的,因此当值相同时,共享相同值的键将被排序。然后您可以读取键-值对(Map.Entry对象),将它们存储在ArrayList中,并使用仅比较值的自定义比较器对其排序。
A=A
C=A
D=A
B=B
E=B
F=C