在java中基于索引名的排序集

在java中基于索引名的排序集,java,sorting,set,Java,Sorting,Set,我需要的是根据特定的索引名对集合数据进行排序。我有以下资料: txt_4: somevalue txt_2: somevalue txt_1: somevalue txt_0: somevalue txt_3: somevalue 如何对这些数据进行排序?谢谢 更新: 排序后的预期数据: txt_0: somevalue txt_1: somevalue txt_2: somevalue txt_3: somevalue txt_4: somevalue 使用对象 TreeSet元素使用其自

我需要的是根据特定的索引名对集合数据进行排序。我有以下资料:

txt_4: somevalue
txt_2: somevalue
txt_1: somevalue
txt_0: somevalue
txt_3: somevalue
如何对这些数据进行排序?谢谢

更新:

排序后的预期数据:

txt_0: somevalue
txt_1: somevalue
txt_2: somevalue
txt_3: somevalue
txt_4: somevalue
使用对象

TreeSet元素使用其自然顺序进行排序,或者由在设置创建时提供的比较器进行排序,具体取决于使用的构造函数

使用对象

TreeSet元素使用其自然顺序进行排序,或者由在设置创建时提供的比较器进行排序,具体取决于使用的构造函数


这不是a的作用吗?

这不是a的作用吗?

使用比较器的完美解决方案:Alphanum算法

人们用数字对字符串进行排序与软件不同。大多数排序算法比较ASCII值,这会产生与人类逻辑不一致的排序。下面是如何修复它。见:

Davekoelle AlphanumComparator.java:

另一种选择是se.sawano字母数字比较器:


使用比较器的完美解决方案:Alphanum算法

人们用数字对字符串进行排序与软件不同。大多数排序算法比较ASCII值,这会产生与人类逻辑不一致的排序。下面是如何修复它。见:

Davekoelle AlphanumComparator.java:

另一种选择是se.sawano字母数字比较器:


未定义集合的排序;不能对集合进行排序

您可以做的是将集合中的元素添加到定义顺序的数据结构中,例如列表,然后对其进行排序


或者,您可以使用已经按排序顺序维护其元素的集合实现。其中包括TreeSet和ConcurrentSkipListSet。但请记住,这些实现比您现在使用的更复杂,可能会减慢程序的其余部分。

集合的顺序没有定义;不能对集合进行排序

您可以做的是将集合中的元素添加到定义顺序的数据结构中,例如列表,然后对其进行排序


或者,您可以使用已经按排序顺序维护其元素的集合实现。其中包括TreeSet和ConcurrentSkipListSet。但请记住,这些实现比您现在使用的更为复杂,可能会减慢程序的其余部分。

使用树集,它将被直接排序。您应该编写自己的比较器,并使用有序的集,例如TreeSet。使用一个TreeSet,它将从框中进行排序。你应该编写自己的比较器,并使用一个有序的集合,例如TreeSet。实际上,将集合添加到列表ArrayList中是我计划的下一步,但我想在问题的更新部分先对它进行排序。有什么想法吗?你不能影响集合中元素的顺序。首先将集合的元素添加到列表中,然后使用对列表进行排序。实际上,将集合添加到列表数组列表中是我计划的下一步,但我希望在问题的更新部分首先对其进行排序。有什么想法吗?你不能影响集合中元素的顺序。首先将集合的元素添加到列表中,然后使用对列表进行排序。感谢您的回答,但我希望在问题的更新部分对其进行排序。在创建question@Dozent请尝试我的答案一次。它会给出,你的预期结果。谢谢你的答案,但我想在问题的更新部分对它进行排序。在创建question@Dozent请尝试一下我的答案。它会给出你预期的结果。
     Set<String> treeSet = new TreeSet<String>();
     treeSet.add("txt_4: somevalue");
     treeSet.add("txt_1: somevalue");
     treeSet.add("txt_0: somevalue");
     treeSet.add("txt_3: somevalue");
     System.out.println(treeSet);