我有一个 ArrayList<String>
。列表中的条目可以采用以下形式:
42356_11_1_9345668
562834_12_1_8674852_8
52423_4_2_586284_2
5234_13_9_535567
正如您所看到的,中间部分包含日期:xx_y 是日期和月份。左侧和右侧的其他值可以是任意长度。有些字符串有最后一位附加数字。
我想首先根据月份(xx_y 中的 y)对列表进行排序,然后根据天(xx_y 中的 xx)对列表进行排序。当然,月份和日期也有可能相等。在这种情况下,还应该根据月份后面的数字进行排序(例如第二个示例中的 8674852)。
如何做到这一点?如果使用其他数据结构更容易,那没关系,我很灵活。
最佳答案
如果您可以将它们放入其他数据结构中,您绝对应该这样做。每次你想用它做某事时解析一个字符串是很痛苦的。
public class Entry implements Comparable<Entry> // Pick a more descriptive name
{
int firstNumber;
int month;
int day;
int lastNumber;
public int compareTo(Entry other)
{
int comparison = month - other.month;
if (comparison == 0)
comparison = day - other.day;
return comparison;
}
}
创建这些条目的列表,然后使用 Collections 方法对其进行排序:
Collections.sort(list);
关于java - 如何根据某些子串对字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351665/