如何基于String java的一个单词对链接列表进行排序

时间:2014-09-16 03:43:20

标签: java sorting linked-list iterator insertion-sort

我想对链接列表进行排序,我看了很多教程视频和示例,我知道如何对链接列表进行排序,但只有链接列表与单个字符串,我的链接列表由句子组成,我有例如,在句子中使用一个单词进行排序。

这个清单(第二号:2号),(第三号:3号),(第一号:1号)这样(第一号:1号),(第二号:2号),(第三号:3号)

我试图拆分我的链表并使用迭代器,但我不知道该怎么做。请帮助。

private LinkedList<String> list = new LinkedList<String>();

list.add("Number three : 3");
list.add("Number One : 1");
list.add("Number two : 2");

for(Iterator<String> iterator =list.iterator(); iterator.hasNext(); ) 
                {
                    String string = iterator.next();
                   for (String word : string.split(" ")){

                     /* if (int.TryParse(word)){ Maybe to get the number?


                      }*/

                   }


            }

15个小时试图找出这个,所以欢迎任何想法:)。

2 个答案:

答案 0 :(得分:3)

可能有几种方法,但您可以编写一个自定义Comparator来计算以您想要的方式传递给它的两个值之间的差异...

LinkedList<String> list = new LinkedList<String>();

list.add("Number three : 3");
list.add("Number three : 1");
list.add("Number three : 2");

System.out.println("Not sorted...");
for (String value : list) {
    System.out.println(value);
}

Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        String w1 = getWordFrom(o1);
        String w2 = getWordFrom(o2);
        return w1.compareTo(w2);
    }

    protected String getWordFrom(String value) {

        String[] parts = value.split(":");
        return parts[1].trim();

    }
});

System.out.println("Now sorted...");
for (String value : list) {
    System.out.println(value);
}

将输出

Not sorted...
Number three : 3
Number three : 1
Number three : 2
Now sorted...
Number three : 1
Number three : 2
Number three : 3

现在,这是一个非常简单的例子,并没有String错过分隔符的条件,但我想你明白了......

答案 1 :(得分:0)

试用此代码:

public class SortList {
    private static LinkedList<String> list= new LinkedList<String>();
    public static void main(String s[]) {

        list.add("Number three : 3");
        list.add("Number three : 1");
        list.add("Number three : 2");

        System.out.println("list :"+list);
        Collections.sort(list);
        System.out.println("sorted list :"+list);
    }
}