gpt4 book ai didi

java - 如何按字符串开头的数字对字符串数组进行排序?

转载 作者:行者123 更新时间:2023-12-01 23:28:19 26 4
gpt4 key购买 nike

在java中我有一个字符串数组列表,每个条目的格式如下

12, Vanilla 格兰诺拉麦片棒,91。

如何按每个字符串的第一个数字的升序对列表进行排序? collections.sort() 能够做到这一点吗?

最佳答案

would collections.sort() be able to do this?

是的,但是,您需要一个自定义 Comparator为了提取主要值并进行适当的比较

这是这个概念的非常基本示例......

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CustomSorter {

public static void main(String[] args) {
List<String> values = new ArrayList<>(25);
values.add("12,Vanilla granola bar,91");
values.add("1,Vanilla granola bar,91");
values.add("50,Vanilla granola bar,91");
values.add("25,Vanilla granola bar,91");
values.add("13,Vanilla granola bar,91");

dump(values);

Collections.sort(values, new SplitComparator());

dump(values);
}

protected static void dump(List<String> values) {
System.out.println(values);
}

public static class SplitComparator implements Comparator<String> {

@Override
public int compare(String o1, String o2) {
int i1 = getIndex(o1);
int i2 = getIndex(o2);

return i1 - i2;
}

protected int getIndex(String o1) {
return Integer.parseInt(o1.split(",")[0]);
}
}
}

应该指出的是,有太多事情可能会出错,这并不好笑。我没有进行检查来确定要比较的 String 是否确实满足 Comparator 的要求,也没有处理第一个元素不满足的情况例如一个数字。

更好的解决方案是将 String 值包装到 POJO 或 interface 中,并提供适当的 getter。这将允许您将Comparator限制为特定类型的类,使其更安全

关于java - 如何按字符串开头的数字对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com