I am writing a program in which a method takes char[][] as input and returns char[]. Method is as below -
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;
}
Main method is as follows -
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);
}
Line 2 in the method getTableFromTwoChits() is compiling fine, whereas line 3 of main method is not compiling.
Please explain what is the reason behind such behaviour?
Compilation error is mentioned as below -
/CircularTableTwoChits.java:21: error: no suitable method found for stream(char[])
Arrays.stream(outputTwoChits).forEach(System.out::println);
^
method Arrays.<T#1>stream(T#1[]) is not applicable
(inference variable T#1 has incompatible bounds
equality constraints: char
upper bounds: Object)
method Arrays.<T#2>stream(T#2[],int,int) is not applicable
(cannot infer type-variable(s) T#2
(actual and formal argument lists differ in length))
method Arrays.stream(int[]) is not applicable
(argument mismatch; char[] cannot be converted to int[])
method Arrays.stream(long[]) is not applicable
(argument mismatch; char[] cannot be converted to long[])
method Arrays.stream(double[]) is not applicable
(argument mismatch; char[] cannot be converted to double[])
where T#1,T#2 are type-variables:
T#1 extends Object declared in method <T#1>stream(T#1[])
T#2 extends Object declared in method <T#2>stream(T#2[],int,int)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error