Collections.sort(String),对我不起作用?

时间:2014-08-06 18:33:33

标签: java sorting

确定。菜鸟问题。

我有一个扫描的字符串,我想使用Collections.sort(字符串)排序。

该字符串来自一个扫描文件,其中包含一堆" asdfasdfasdf"在它。

我扫描了文件(.txt),scanmethod返回一个名为scanningBok的字符串;

然后将该字符串添加到名为skapaArrayBok();

的ArrayList中

这是代码:

public ArrayList<String> skapaArrayBok() {

ArrayList<String> strengar = new ArrayList<String>();

strengar.add(scanner());
Collections.sort(strengar);

return (strengar);
}
在我不起眼的新秀大脑中,输出将是&#34; aaadddfffsss&#34;但没有。

这是一个学习,项目的目的是找到一本书中最常用的10个单词。但我无法对其进行排序。但我只是想知道为什么它不会对扫描的字符串进行排序?

4 个答案:

答案 0 :(得分:3)

您正在排序列表,而不是字符串。该列表只有一个元素,因此对它进行排序不会改变任何内容。

为了对String的内容进行排序,将其转换为字符数组,并对数组进行排序。

答案 1 :(得分:1)

Collections.sort()对列表中的项目进行排序。

您的列表中只有一个项目:字符串&#34; aaadddfffsss&#34;。没有什么可以排序的。

SUGGESTIONS:

1)在您的收藏中阅读更多字符串

  public ArrayList<String> skapaArrayBok() {

    ArrayList<String> strengar = new ArrayList<String>();

    // Input three strings
    strengar.add(scanner());
    strengar.add(scanner());
    strengar.add(scanner());

    // Now sort
    Collections.sort(strengar);

......或......

2)将字符串拆分为字符,然后对字符进行排序。

  public ArrayList<String> skapaArrayBok() {

    // Get string    
    String s = scanner());
    char[] charArray = s.toCharArray();
    Arrays.sort(charArray );

    // Return sorted string
    return (new String(charArray);

答案 2 :(得分:0)

排序&#34; strengar&#34;,ArrayList是正确的。但是,如果您只添加了一个String,它将不会更改ArrayList的顺序。已经对包含一个元素的列表进行了排序。如果要对ArrayList进行排序,则应使用需要添加的每个String调用ArrayList上的add(),然后排序。

答案 3 :(得分:0)

你想要对String中完全不同的字符进行排序,你需要重新组织字符,一个可能的解决方案(特别是知道字符串是不可变的)是以下Sort a single String in Java