按字符串的6个第一个字符排序字符串

时间:2017-10-28 20:53:27

标签: java string sorting alphabetical-sort

我的ID格式如下:XXXXXXYYY00000

我要做的是通过6个第一个字符(6 x' s(可以是任何字符))按字母顺序排列单个字符串,每个新ID由新行字符分隔

例如:

AOPSIKPMI23495将在BWLMBEPMI00001

之前发布

到目前为止我所拥有的是:

String = String + this.ID + "\n";

我不知道如何处理我的问题才能解决它。

我的问题如下:我如何按字母顺序整理我的ID,只有前6个字符(这意味着如果与6个第一个字符相关,它仍然不应该用下一个字符解决它3个字符)并且仍然保留我的字符串?

3 个答案:

答案 0 :(得分:3)

您可以按前6个字符对列表进行排序,然后使用Collectors.joining将每个字符串与"\n"分隔符分开。

String result = myList.stream().sorted(Comparator.comparing(e -> e.substring(0,6)))
                               .collect(Collectors.joining("\n"));

答案 1 :(得分:0)

你可以简单地实现一个比较器来比较前6个字符:

class FirstSixCharComparator implements Comparator<String> {
    @Override
    public int compare(String a, String b) {
        return a.substring(0,6)compareTo(b.substring(0,6));
    }
}

然后使用比较器执行排序:

Collections.sort(list, new FirstSixCharComparator<String>());   //for collections    
Arrays.sort(array, new FirstSixCharComparator<String>());       //for arrays

答案 2 :(得分:-1)

这段代码应该可以解决你的问题,如果不是,那么我们可以编写比较器类的东西来满足你的任何要求。

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

public class Sample {

    public static void main(String[] args) {
        List<String> words = new ArrayList<String>();
        words.add("AOPSIKDDD23495");
        words.add("BWLMBEPMI00001");
        Collections.sort(words);
        System.out.println(words);      
    }

}