我有一个字符串和字符串中的一些字符组成的数组。我想按字符在字符串中出现的顺序排列它们。例如: 数组a由s,o,e组成,字符串为house。我希望结果是“ ose”。我尝试使用Arrays.sort方法,但它按字母顺序返回字母。
答案 0 :(得分:6)
您可以使用sort
的此重载:
Arrays.sort(chars, Comparator.comparingInt(str::indexOf));
假设chars
的类型为Character[]
,而str
的类型为String
。
答案 1 :(得分:0)
如果字符串中的字符只有 个,您实际上可以算出数组中每个字符的数量,然后遍历字符串,以添加到新的集合特定计数中这个角色
String string = "house";
List<String> chars = Arrays.asList("s", "e", "o", "o")
Map<String, Integer> characterCount = initializeMapWithCharsAndZeroes(chars);
for(String character : chars) {
characterCount.put(character, characterCount.get(characterCount)+1);
}
for(String character : string .split("")) {
for(int i = 0; i < characterCount.get(character); i++) {
System.out.println(string);
}
}
答案 2 :(得分:0)
创建自定义编译器:
class MyComperartor implements Comparator<Character> {
private static String pattern = "house";
public int compare(Character c1, Character c2) {
return pattern.indexOf(c1) - pattern.indexOf(c2);
}
}
并对数组排序:
Character[] array = { 'e', 's', 'o'};
Arrays.sort(array, new MyComperartor());
System.out.println(Arrays.toString(array));
将打印:
[o, s, e]