首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一些规则对文本进行排序

使用一些规则对文本进行排序
EN

Stack Overflow用户
提问于 2013-05-03 20:25:28
回答 3查看 842关注 0票数 2

我有一个数组列表,如下

代码语言:javascript
复制
100 AAA 500-1 Lorem Ipsum
100 BBB 500-2 Lorem Ipsum
101 AAA 500-1 Lorem Ipsum
101 AAA 500-2 Lorem Ipsum
100 BBB 500-3 Lorem Ipsum

我希望这篇文章被分类为

代码语言:javascript
复制
101 AAA 500-1 Lorem Ipsum
101 AAA 500-2 Lorem Ipsum
100 AAA 500-1 Lorem Ipsum
100 BBB 500-2 Lorem Ipsum
100 BBB 500-3 Lorem Ipsum

首先,按数字(101,100)降序。

我可以按空格拆分每个元素,并获得单独的单词和排序。但是有没有人可以用其他方法或者已知的算法来帮助我呢?如果您需要更多信息,请告诉我。

提前谢谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-03 20:33:22

创建一个Comparator可以解决您的问题。你应该实现类似这样的东西:

代码语言:javascript
复制
public class MyComparator implements Comparator<MyObject> {    
  public int compare(MyObject o1, MyObject o2) {
    if (o1 == null || o2 == null) {
      throw new NullPointerException();
    }    
    if (o1.getValue1() != o2.getValue1()) {
      return Integer.compare(o1.getValue1(), o2.getValue1());
    }    
    return Integer.compare(o1.getValue2(), o2.getValue2());
  }
}

当然,有更多的方法可以解决这个问题,例如,你可以实现自己的排序算法。但是,我认为使用Comparator是解决这个问题的正确的"java-way“。

票数 7
EN

Stack Overflow用户

发布于 2013-05-03 20:47:26

我假设您有一个StringCollection

我将使用比较器来解决它。

代码语言:javascript
复制
    List<String> myCollection = new ArrayList<String>();

    Collections.sort(myCollection, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            // splitting it with space character
            String[] split1 = o1.split(" ");
            String[] split2 = o2.split(" ");

            int i1 = Integer.parseInt(split1[0]);
            int i2 = Integer.parseInt(split2[0]);

            int diff = (i2 - i1);

            if(diff != 0){ // if two integer are equal
                return diff;
            }else{
                return split2[1].compareTo(split1[1]);
            }
        }
    });
票数 2
EN

Stack Overflow用户

发布于 2013-05-03 20:35:56

您需要为此实现一个排序,并将其传递给容器的Comparator ()方法。

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

https://stackoverflow.com/questions/16358894

复制
相关文章

相似问题

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