如何在Java中对字符串的ArrayList排序?

如何在Java中对字符串的ArrayList排序?,java,sorting,arraylist,Java,Sorting,Arraylist,我有字符串s,它们被随机放入数组列表 private ArrayList<String> teamsName = new ArrayList<String>(); String[] helper; 鉴于您无法控制输入(即进入ArrayList的字符串是随机的;zebra或dragon以任何顺序排列),一旦ArrayList中填充了输入,我如何按字母顺序对它们进行排序(不包括第一个) teamsName[0]正常;按字母顺序排序teamsName[1到teamsName

我有
字符串
s,它们被随机放入
数组列表

private ArrayList<String> teamsName = new ArrayList<String>();
String[] helper; 
鉴于您无法控制输入(即进入ArrayList的字符串是随机的;zebra或dragon以任何顺序排列),一旦ArrayList中填充了输入,我如何按字母顺序对它们进行排序(不包括第一个)

teamsName[0]
正常;按字母顺序排序
teamsName[1到teamsName.size]

查看

您只需删除第一个元素,对列表进行排序,然后重新添加即可。

检查方法。这会根据自然顺序自动对列表进行排序。您可以对使用方法获得的每个子列表应用此方法

private List teamsName=new ArrayList();
List subList=teamsName.subList(1,teamsName.size());
Collections.sort(子列表);

上面的代码将反映排序的原始列表的实际子列表。

您可以直接对
helper[]
数组进行排序:

java.util.Arrays.sort(helper, 1, helper.length);
将数组从索引1排序到结尾。保留索引0处的第一项不变


请参见您可以使用
TreeSet
自动排序列表值:

import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetExample {

    public static void main(String[] args) {
        System.out.println("Tree Set Example!\n");

        TreeSet <String>tree = new TreeSet<String>();
        tree.add("aaa");
        tree.add("acbbb");
        tree.add("aab");
        tree.add("c");
        tree.add("a");

        Iterator iterator;
        iterator = tree.iterator();

        System.out.print("Tree set data: ");

        //Displaying the Tree set data
        while (iterator.hasNext()){
            System.out.print(iterator.next() + " ");
        }
    }

}
import java.util.Iterator;
导入java.util.TreeSet;
公共类树样本{
公共静态void main(字符串[]args){
System.out.println(“树集示例!\n”);
树集树=新树集();
添加(“aaa”);
树。添加(“acbbb”);
树。添加(“aab”);
树。添加(“c”);
树。添加(“a”);
迭代器;
迭代器=tree.iterator();
系统输出打印(“树集数据:”);
//显示树集数据
while(iterator.hasNext()){
System.out.print(iterator.next()+);
}
}
}

我最后添加了“a”,但最后一个元素必须是“c”。

将Collections.sort()与subList()一起使用,顺便问一下,为什么第一个元素被排除在外?我希望这不是因为第一个元素是header元素,比如“teamname”。。。这应该只在前端进行管理,稍后再进行筛选…第一个元素是我的团队名称,因此我希望将其作为第一个元素;它将在下拉菜单上,就像我们将美国作为第一个国家,并按字母顺序排列其余国家一样,您需要删除排序之外的子列表以获得结果:
List sublist=teamsName.sublist(1,teamsName.size());Collections.sort(子列表)
子列表中的
fromIndex
不应该是0而不是1?@dokaspar编号。OP明确希望排除第一个元素。阅读问题-特别是在最后。OP的请求可能会在复制和粘贴时产生一些误解。。由于这个问题看起来更一般……
TreeSet
肯定很方便,但集合不是列表。使用
TreeSet
将删除可能不需要的重复项:问题在于排序,而不是排序和重复数据消除。
Collections.sort(teamsName.subList(1, teamsName.size()));
java.util.Arrays.sort(helper, 1, helper.length);
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetExample {

    public static void main(String[] args) {
        System.out.println("Tree Set Example!\n");

        TreeSet <String>tree = new TreeSet<String>();
        tree.add("aaa");
        tree.add("acbbb");
        tree.add("aab");
        tree.add("c");
        tree.add("a");

        Iterator iterator;
        iterator = tree.iterator();

        System.out.print("Tree set data: ");

        //Displaying the Tree set data
        while (iterator.hasNext()){
            System.out.print(iterator.next() + " ");
        }
    }

}