【问题标题】:How can I sort an ArrayList of Strings in Java?如何在 Java 中对字符串的 ArrayList 进行排序?
【发布时间】:2012-10-14 08:02:01
【问题描述】:

我将Strings 随机放入ArrayList

private ArrayList<String> teamsName = new ArrayList<String>();
String[] helper; 

例如:

teamsName.add(helper[0]) where helper[0] = "dragon";   
teamsName.add(helper[1]) where helper[1] = "zebra";   
teamsName.add(helper[2]) where helper[2] = "tigers" // and so forth up to about 150 strings.

鉴于您无法控制输入的事实(即进入 ArrayList 的字符串是随机的;斑马或龙以任何顺序排列),一旦 ArrayList 被输入填充,我如何按字母顺序对它们进行排序,不包括第一个?

teamsName[0] 没问题;按字母顺序对teamsName[1 to teamsName.size] 进行排序。

【问题讨论】:

  • 使用 Collections.sort() 和 subList()
  • 顺便说一句,为什么要排除第一个元素?我希望这不是因为第一个元素是像“团队名称”这样的标题元素......应该只在前端管理,然后过滤......
  • 第一个元素是我团队的名字,所以我想把它作为第一个;它将在下拉菜单中,就像我们将美国作为第一个并按字母顺序排列其他国家/地区

标签: java sorting arraylist


【解决方案1】:

看看Collections.sort(List&lt;T&gt; list)

您可以简单地删除第一个元素,对列表进行排序,然后重新添加。

【讨论】:

    【解决方案2】:

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

    private List<String> teamsName = new ArrayList<String>();
    List<String> subList = teamsName.subList(1, teamsName.size());
    Collections.sort(subList);
    

    【讨论】:

      【解决方案3】:
      Collections.sort(teamsName.subList(1, teamsName.size()));
      

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

      【讨论】:

      • 需要对排序外的子列表进行delcare才能得到结果:List&lt;String&gt; sublist = teamsName.subList(1, teamsName.size()); Collections.sort(sublist);
      • 子列表中的fromIndex不应该是0而不是1吗?
      • @dokaspar 否。OP 明确希望排除第一个元素。阅读问题 - 特别是在最后。
      • OP 的请求可能会在复制和粘贴时造成一些误解。因为问题看起来更笼统...
      【解决方案4】:

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

      java.util.Arrays.sort(helper, 1, helper.length);
      

      从索引 1 到末尾对数组进行排序。保持索引 0 处的第一项不变。

      Arrays.sort(Object[] a, int fromIndex, int toIndex)

      【讨论】:

        【解决方案5】:

        您可以使用自动排序列表值的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() + " ");
                }
            }
        
        }
        

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

        【讨论】:

        • TreeSet 绝对方便,但集合不是列表。使用TreeSet 将删除可能不需要的重复项:问题是关于排序,而不是排序重复数据删除。
        猜你喜欢
        • 1970-01-01
        • 2017-06-07
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多