我有一个工作示例来打印唯一的数字(即123有唯一的数字但11没有)
下面是代码
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter any number : ");
int n = Integer.parseInt(br.readLine());
double val = Math.pow(10, n);
List<Integer> list = new ArrayList<>();
for(int k=1;k<=val;k++){
String s = Integer.toString(k);
if(s.length() == 1){
list.add(k);
} else{
int l = s.length();
int flag = 0;
for (int i = 0; i < l - 1; i++) {
for (int j = i + 1; j < l; j++) {
if (s.charAt(i) == s.charAt(j)) {
flag = 1;
break;
}
}
} if(flag == 0){
list.add(k);
}
}
}
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)
如何使用java8有效地编写上面的代码?
它可以改写为下一个:
List<Integer> list = IntStream.range(1, (int) val + 1)
.filter(
i -> Integer.toString(i).chars().distinct().count() == Integer.toString(i).length()
)
.boxed()
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)