在Swing中,密码字段具有getPassword()(返回char[])方法而不是通常getText()(返回String)方法.同样,我遇到了一个不使用String来处理密码的建议.
为什么String在密码方面会对安全构成威胁?使用感觉不方便char[].
在Java 8中,有一种新方法String.chars()返回表示字符代码的ints(IntStream)流.我想很多人会期待char这里有一股流.以这种方式设计API的动机是什么?
我正在编写一个程序,其中一个方法将char [] []作为输入并返回char [].方法如下 -
private static char[] getTableFromTwoChits(char[][] inputTwoChits) {
Map<Character, Character> map = new HashMap<>();
Arrays.stream(inputTwoChits).forEach(x -> map.put(x[0], x[1]));
map.entrySet().forEach(System.out::println);
char[] result = new char[inputTwoChits.length+1]; int index=0;
char startPoint = inputTwoChits[0][0];
do {
result[index] = startPoint;index++;
startPoint = map.get(startPoint);
}while(startPoint != inputTwoChits[0][0]);
result[index] = startPoint;
return result;
}
Run Code Online (Sandbox Code Playgroud)
主要方法如下 -
public static void main(String[] args) {
char[][] inputTwoChits = {{'A','B'},{'C','D'},{'B','C'},{'E','F'},{'F','A'},{'D','E'}};
char[] outputTwoChits = getTableFromTwoChits(inputTwoChits);
Arrays.stream(outputTwoChits).forEach(System.out::println);
}
Run Code Online (Sandbox Code Playgroud)
方法getTableFromTwoChits()中的第2行正在编译,而main方法的第3行没有编译.
请解释这种行为背后的原因是什么?
编译错误如下所述 -
/CircularTableTwoChits.java:21: error: no suitable method found for stream(char[]) …Run Code Online (Sandbox Code Playgroud) 为什么Java 8没有StringStream和CharStream.
StringStream.of("String1","String2");
StringStream.concat(stream1,stream2);
StringStream.builder().add("String1").add("string2").accept("string3");
Run Code Online (Sandbox Code Playgroud)