加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java order arraylist string [] by number

发布时间:2020-12-15 05:08:15 所属栏目:Java 来源:网络整理
导读:我有一个String []类型的数组列表.我想用String [0]作为int来命令它.我有这个: Collections.sort(listitems,new ComparatorString[]() { @Override public int compare(String[] lhs,String[] rhs) { return lhs[0].compareToIgnoreCase(rhs[0]); }}); 但这
我有一个String []类型的数组列表.我想用String [0]作为int来命令它.我有这个:

Collections.sort(listitems,new Comparator<String[]>() {
 @Override
 public int compare(String[] lhs,String[] rhs) {
  return lhs[0].compareToIgnoreCase(rhs[0]);
 }
});

但这个顺序是这样的:
10111222021345
我试图将lhs [0]和rhs [0]转换为int,但int类型没有任何类型的比较,我不知道我需要返回什么类型的int

解决方法

比较的结果意味着:

>如果第一个参数在逻辑上“小于”第二个参数,则为负
>如果第一个参数在逻辑上“超过”第二个参数,则为正
>如果第一个参数在逻辑上等于第二个参数,则为零

因此,如果您确定每个数组的第一个字符串可以解析为整数,我会使用:

@Override
public int compare(String[] lhs,String[] rhs) {
    int leftInt = Integer.parseInt(lhs[0]);
    int rightInt = Integer.parseInt(rhs[0]);
    return leftInt < rightInt ? -1
        : leftInt > rightInt ? 1
        : 0;
}

Java 1.7具有有用的Integer.compare方法,但我认为您无法使用它.您可以使用Integer.compareTo,但这可能会产生比您真正想要的移动设备更多的垃圾……

请注意,即使当leftInt和rightInt非常大,或者可能是负数时,这也会起作用 – 从另一个值中减去一个值的解决方案假设减法不会溢出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读