我只想获取一个已排序的地图,我的代码如下:

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_str2和STR_str3作为映射的键放在STR_str1之前。同样,我必须将STR_ABC和STR_XYZ放在STR_str2之前。
我只想要功能getSequesce的sortedMap,这样我就可以得到输出

STR_free,列表6

“ STR_7”,列表7

STR_XYZ,清单5

STR_ABC,清单4

STR_str3,list3

“ STR_str2”,列表1

“ STR_str1”,列表

如果list的值以STR_开头,则该STR_必须已经在映射中可用。

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

请帮助我建议我可以采用的方法。我有不会造成周期性问题的数据。
谢谢。

最佳答案

按定义映射不排序(与集合相同),因此无法保证遍历顺序。但是,有一个接口SortedMap及其实现(例如TreeMap)。在这种情况下,您的键必须以有意义的方式实现equals()和hashcode()或实现Comparable接口。在您的情况下,您可以使用Strings作为键,而String实现则具有可比性。所以你可以使用SortedMap

10-07 19:01