如何在 Java 8 中打印唯一的数字平方?
How to print Unique Squares Of Numbers In Java 8?
这是我的代码,用于查找唯一数字并打印它的方块。我如何将此代码转换为 java8,因为流式传输 API 会更好?
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
HashSet<Integer> uniqueValues = new HashSet<>(numbers);
for (Integer value : uniqueValues) {
System.out.println(value + "\t" + (int)Math.pow(value, 2));
}
将 IntStream.of
与 distinct
和 forEach
一起使用:
IntStream.of(3, 2, 2, 3, 7, 3, 5)
.distinct()
.forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
或者如果您希望源保留为 List<Integer>
,那么您可以执行以下操作:
numbers.stream()
.distinct()
.forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
又一个变体:
new HashSet<>(numbers).forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
numbers.stream()
.distinct()
.map(n -> String.join("\t",n.toString(),String.valueOf(Math.pow(n, 2))))
.forEach(System.out::println);
正如@Holger 评论的那样,在上面的答案中 System.out.println
看起来是最昂贵的操作。
也许我们可以用更快的方式来做,比如:
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
System.out.println( numbers.stream()
.distinct()
.map(n -> n+"\t"+n*n)
.collect(Collectors.joining("\n"))
);
这是我的代码,用于查找唯一数字并打印它的方块。我如何将此代码转换为 java8,因为流式传输 API 会更好?
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
HashSet<Integer> uniqueValues = new HashSet<>(numbers);
for (Integer value : uniqueValues) {
System.out.println(value + "\t" + (int)Math.pow(value, 2));
}
将 IntStream.of
与 distinct
和 forEach
一起使用:
IntStream.of(3, 2, 2, 3, 7, 3, 5)
.distinct()
.forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
或者如果您希望源保留为 List<Integer>
,那么您可以执行以下操作:
numbers.stream()
.distinct()
.forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
又一个变体:
new HashSet<>(numbers).forEach(n -> System.out.println(n + "\t" +(int)Math.pow(n, 2)));
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
numbers.stream()
.distinct()
.map(n -> String.join("\t",n.toString(),String.valueOf(Math.pow(n, 2))))
.forEach(System.out::println);
正如@Holger 评论的那样,在上面的答案中 System.out.println
看起来是最昂贵的操作。
也许我们可以用更快的方式来做,比如:
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
System.out.println( numbers.stream()
.distinct()
.map(n -> n+"\t"+n*n)
.collect(Collectors.joining("\n"))
);