我的ID格式如下:XXXXXXYYY00000
我要做的是通过6个第一个字符(6 x' s(可以是任何字符))按字母顺序排列单个字符串,每个新ID由新行字符分隔
例如:
AOPSIKPMI23495将在BWLMBEPMI00001
之前发布到目前为止我所拥有的是:
String = String + this.ID + "\n";
我不知道如何处理我的问题才能解决它。
我的问题如下:我如何按字母顺序整理我的ID,只有前6个字符(这意味着如果与6个第一个字符相关,它仍然不应该用下一个字符解决它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);
}
}