首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序包含数字的字符串ArrayList的最佳方法

排序包含数字的字符串ArrayList的最佳方法
EN

Stack Overflow用户
提问于 2014-03-27 12:54:31
回答 3查看 604关注 0票数 0

我有一个数组列表,是以这种样式设置的.

  • 4只狗
  • 10只猫
  • 2只狗

我想把它分类,这样ArrayList就会按.

  • 1只狗
  • 4只狗
  • 10只猫

在不使用比较器或其他方法的情况下,通过取出数字(将字符串除以空格“?”)、比较字符串并将排序结果放回ArrayList中,哪种方法是最短、最简单的排序方法?如果您可以附加您的代码片段,这将是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-27 12:57:59

最简单的方法是使用比较器:

代码语言:javascript
复制
Collections.sort(list, new Comparator<String>() {
    public void compare(String one, String two) {
         return getNumber(one) - getNumber(two);
    }
    private int getNumber(String str) {
        return Integer.parseInt(one.split(" ")[0]);
    }
}

我真的不知道什么可以更简单。

票数 5
EN

Stack Overflow用户

发布于 2014-03-27 13:00:08

如果没有显式比较器,请尝试使用Java 8的Lambda特性:

代码语言:javascript
复制
//Assuming that the list variable is a string that looks like e.g. "1 10 2 5"

Arrays.sort(list.split(" "), 
    (String a, String b) -> { return Integer.valueOf(a).compareTo(Integer.valueOf(b)) }; 
);

//Assuming that the list variable is an array list of Strings

Collections.sort(list, 
    (String a, String b) -> { return Integer.valueOf(a).compareTo(Integer.valueOf(b)) }; 
);
票数 2
EN

Stack Overflow用户

发布于 2014-03-27 12:58:28

您需要在该类中创建一个具有String字段的类,并实现compareTo方法和编写比较逻辑。

ArrayList中使用这个类对象,然后使用Collections.sort方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22688296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档