根据java </string>中的索引名称对<string>进行排序

时间:2013-09-17 09:00:44

标签: java sorting set

我需要根据特定的索引名称对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

4 个答案:

答案 0 :(得分:10)

使用TreeSet对象。

  

TreeSet元素使用它们的自然顺序排序,或者在创建时创建时提供的Comparator,具体取决于使用的构造函数。

     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);

答案 1 :(得分:2)

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

人们使用与软件不同的数字对字符串进行排序。大多数排序算法都会比较ASCII值,这会产生与人类逻辑不一致的排序。以下是修复方法。请参阅:http://www.davekoelle.com/alphanum.html

Davekoelle AlphanumComparator.java http://www.davekoelle.com/files/AlphanumComparator.java

另一种选择 se.sawano 字母数字比较器https://github.com/sawano/alphanumeric-comparator

AlphanumComparator

答案 2 :(得分:1)

未定义Set的顺序;你不能整理一套。

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

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

答案 3 :(得分:0)

这不是TreeSet的用途吗?