【问题标题】:sort alphanumeric arraylist in ascending order按升序对字母数字数组列表进行排序
【发布时间】:2013-03-19 10:00:39
【问题描述】:

如何对具有类似元素的数组列表进行排序

02112-S1530   
02112-S1529  
02112-S1531 

按升序排列。

我正在使用 Collection.sort(列表名称);
但是得到输出

02112-S1531  
02112-S1529   
02112-S1530  

预期输出为:

02112-S1529  
02112-S1530   
02112-S1531

我喜欢

List<String> gbosIdsList = new ArrayList<String>();
gbosIdsList.add("02112-S1530");
gbosIdsList.add("02112-S1529");
gbosIdsList.add("02112-S1531");
Collections.sort(gbosIdsList);
Iterator itr = gbosIdsList.iterator();
  while(itr.hasNext()){
      System.out.println(itr.next());           
}

【问题讨论】:

  • 使用比较器对字母数字数组列表进行排序。
  • 我认为没有理由对这篇文章投反对票。
  • @user1912935 现在是学习如何使用它的时候了。
  • @user1912935 您的代码对我来说运行良好。尝试清理项目并重试。 :)
  • 没有任何人意识到代码确实有效。我已经尝试过了,得到了 OP 想要的输出。

标签: java collections


【解决方案1】:

我尝试了你的代码并得到了输出:

02112-S1529
02112-S1530
02112-S1531

另外,你已经让你的迭代器通用

泛型 101: don't use Raw type in new code

Iterator<String> itr = gbosIdsList.iterator();

【讨论】:

【解决方案2】:

像这样定义一个比较器

public class MyComparator implements Comparator<String> {

    /* (non-Javadoc)
     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
     */
    @Override
    public int compare(String arg0, String arg1) {
        //Do your processing here 
        //and
        //return +1 if arg0 > arg1
        //return 0 if arg0 == arg1
        //return -1 if arg0 < arg1
        return 0;
    }

}

然后将此添加到您的sort

List<String> gbosIdsList = new ArrayList<String>();
//add values
Collections.sort(gbosIdsList,new  MyComparator());

FYR 你可以阅读this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2022-01-09
    • 2012-04-03
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多