java - 如何对 map 进行排序或我需要遵循哪种遍历方法?

标签 java binary-search-tree depth-first-search

我只想得到一个排序的 map ,我的代码如下:

public class SubString {public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("string2");
list.add("STR_str2");
list.add("STR_str3");
getSequesce("STR_str1", list);
List<String> list1 = new ArrayList<>();
list1.add("STR_xyz");
list1.add("STR_ABC");
getSequesce("STR_str2", list1);
List<String> list3 = new ArrayList<>();
list3.add("Anukul");
list3.add("mittal");
getSequesce("STR_str3", list3);
List<String> list4 = new ArrayList<>();
list4.add("Test");
list4.add("STR_XYZ");
getSequesce("STR_ABC", list4);
List<String> list5 = new ArrayList<>();
list5.add("val");
list5.add("var");
getSequesce("STR_XYZ", list5);
List<String> list6 = new ArrayList<>();
list6.add("val6");
list6.add("valtest");
getSequesce("STR_free", list6);
List<String> list7 = new ArrayList<>();
list7.add("val6");
list7.add("STR_free");
getSequesce("STR_7", list7);

}private static void getSequesce(String string, List<String> list) {
Map<String, List<String>> map = new HashMap<>();
Map<String, List<String>> sortedMap = new TreeMap<>();
map.put(string, list);

for (Map.Entry<String, List<String> > itrMap : map.entrySet() ) {

}
}}

在第一次调用 getSequence 方法时,我放置了一个字符串“STR_str1”和一个列表。 我只想将其添加到一个映射中,其中键是 STR_str1,其值是列表。 但我的问题是我必须在 STR_str1 之前将 STR_str2 和 STR_str3 作为 map 中的键。同样,我必须将 STR_ABC 和 STR_XYZ 放在 STR_str2 之前。 我只想要一个来自函数 getSequesce 的排序映射,以便我得到像

这样的输出

STR_free,列表6

“STR_7”,列表7

STR_XYZ,列表5

STR_ABC,列表4

STR_str3,列表3

“STR_str2”,列表1

“STR_str1”,列表

如果列表的值以 STR_ 开头,则该 STR_ 必须已在 map 中可用。

“STR_free”、list6“STR_XYZ”、list5“STR_str3”、list3 的位置可以在任何位置,因为它们不包含任何依赖项。

请帮我建议我可以采取什么方法。我有不会造成循环问题的数据。 谢谢。

最佳答案

根据定义,Map 没有排序(与 set 相同),因此无法保证遍历顺序。然而有一个接口(interface)SortedMap及其实现(例如 TreeMap)。在这种情况下,您的键必须以有意义的方式实现 equals() 和 hashcode() 或实现 Comparable 接口(interface)。在您的情况下,您使用字符串作为键,并且字符串实现相当。所以你可以使用SortedMap

关于java - 如何对 map 进行排序或我需要遵循哪种遍历方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680264/

相关文章:

java - @Scheduled 方法中的 Spring @Async 方法调用

python - 实现中序遍历时出现NameError

recursion - CLISP dfs 获取程序堆栈溢出

java - leetcode 437题为什么子节点也应用DFS?

graph - 从回溯的角度解释 BFS 和 DFS

java - 如何在 Java 中从 CSS 3 生成 PDF 文档

java - Java数据结构的空间复杂度

java - Android/Java 开发 : How to change TextView text, 使用 Java,在 strings.xml 中预定义字符串?

algorithm - 查找构建二叉搜索树的时间复杂度

java - 堆栈溢出二叉搜索树计算深度