如何将字符串中所有可能的两个字符存储到java中的String数组中?

时间:2015-04-27 15:02:05

标签: java arrays string

如何将字符串中所有可能的两个字符存储到java中的String数组中? 例如,如果我给字符串" abcd"。然后我想将所有可能的两个字符(aa,ab,ac,ad,ba,bb,bc,bd,ca,cb,cc,cd,da,db,dc,dd)存储到字符串数组中。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

执行此操作并避免重复的最简单方法是迭代字符串并使用Set存储结果:

String input = "abcd";
HashSet<String> set = new HashSet<String>();
for (int i=0; i < input.length()-1; ++i) {
    for (int j=0; j < input.length(); ++j) {
        String value = input.charAt(i) + "" + input.charAt(j);
        set.add(value);    // duplicates will not be added
    }
}

// convert the set to a String array
String[] array = set.toArray(new String[set.size()]);

答案 1 :(得分:1)

使用Java 8,你可以做到

public static void main(String... args) {
    System.out.println(twoCharCombinations("abcd"));
}

public static String twoCharCombinations(String s) {
    return IntStream.range(0, s.length()).boxed().flatMap(i ->
                    IntStream.range(0, s.length()).boxed().map(j ->
                            "" + s.charAt(i) + s.charAt(j))
                           ).collect(Collectors.joining(","));
}

打印

aa,ab,ac,ad,ba,bb,bc,bd,ca,cb,cc,cd,da,db,dc,dd

您可以.collect(Collectors.toList())创建一个String列表,而不是字符串[]。