首页 > 解决方案 > 我如何使用 java 8 基于先前的组合在两个字符之间生成连接?

问题描述

我正在解决一个问题,试图根据使用 java 8 的早期生成的组合来生成两个字符之间的所有可能组合

例如 :

private static final String LETTER_RANGE = "abcdefghijklmnopqrstuvwxz";

from this letter rang I want to extract all differents combine between two chars XX

for example : 

zz,zx,zw....za 
xz,xx,xw....xa
..,..,..,..,..
az,ax,aw... aa

My problem is I need to generate those combination at runtime based on previous combine : 

String value = generate("zx") // this should return 'zw'

任何人都可以帮助我了解如何使用 java 8 循环、流、字符串来做到这一点提前谢谢

标签: javaarraysstringjava-8

解决方案


您可以使用简单的字符算术。因为chars 可以递增和比较:

final List<String> permutations = new ArrayList<>(26 * 26);
for (char[] array = {'a', 'a'}; array[0] <= 'z'; array[0]++) {
    for (array[1] = 'a'; array[1] <= 'z'; array[1]++) {
        permutations.add(new String(array));
    }
}

这段代码创建了介于a和之间的所有字符的每个组合,z并将它们添加到List.

这是可能的,因为在 ASCII 中a(97) 的字符值小于z(122) 中的字符值。

我还使用了一些优化,例如使用array内部的for-loop来保存 2 个字符的当前组合。然后这个数组也可以直接用于创建一个新字符串,使用字符串构造函数:String(char[])


推荐阅读