按前 6 个字符对字符串进行排序
Sorting a String by its 6 first characters
我的 ID 格式如下:XXXXXXYYY00000
我想要做的是获取一个按字母顺序排列的字符串,该字符串由前 6 个字符(6 个 x(它们可以是任何字符))组成,每个新 ID 由换行符分隔
例如:
AOPSIKPMI23495 会先于 BWLMBEPMI00001
到目前为止我所拥有的是:
String = String + this.ID + "\n";
而且我不知道如何处理我的问题才能解决它。
我的问题如下:如何仅按前 6 个字符按字母顺序排列我的 ID(这意味着如果前 6 个字符有联系,它仍然不应该用接下来的 3 个字符来解决)还保留着我的 String ?
您可以简单地实现一个比较器来比较前 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
您可以按前 6 个字符对列表进行排序,然后使用 Collectors.joining
用 "\n"
分隔符分隔每个字符串。
String result = myList.stream().sorted(Comparator.comparing(e -> e.substring(0,6)))
.collect(Collectors.joining("\n"));
这段代码应该可以解决您的问题,如果不能,那么我们可以编写比较器之类的东西来满足您的任何要求。
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);
}
}
我的 ID 格式如下:XXXXXXYYY00000
我想要做的是获取一个按字母顺序排列的字符串,该字符串由前 6 个字符(6 个 x(它们可以是任何字符))组成,每个新 ID 由换行符分隔
例如:
AOPSIKPMI23495 会先于 BWLMBEPMI00001
到目前为止我所拥有的是:
String = String + this.ID + "\n";
而且我不知道如何处理我的问题才能解决它。
我的问题如下:如何仅按前 6 个字符按字母顺序排列我的 ID(这意味着如果前 6 个字符有联系,它仍然不应该用接下来的 3 个字符来解决)还保留着我的 String ?
您可以简单地实现一个比较器来比较前 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
您可以按前 6 个字符对列表进行排序,然后使用 Collectors.joining
用 "\n"
分隔符分隔每个字符串。
String result = myList.stream().sorted(Comparator.comparing(e -> e.substring(0,6)))
.collect(Collectors.joining("\n"));
这段代码应该可以解决您的问题,如果不能,那么我们可以编写比较器之类的东西来满足您的任何要求。
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);
}
}