按照它们在字符串java中出现的顺序排列数组中的字符

时间:2018-12-02 13:00:28

标签: java

我有一个字符串和字符串中的一些字符组成的数组。我想按字符在字符串中出现的顺序排列它们。例如: 数组a由s,o,e组成,字符串为house。我希望结果是“ ose”。我尝试使用Arrays.sort方法,但它按字母顺序返回字母。

3 个答案:

答案 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]