谁能给我解释一下为什么下面的代码不起作用?
我试图了解Java8的新特性,并解决了BerlinClock卡塔问题。在此期间,我必须以“hh:mm:ss”
的格式解析字符串--我想使用流,并编写了下面的代码。
import java.util.Arrays;
private Integer[] parseTime (String time){
Integer[] hhmmss = (Integer[]) Arrays.stream(time.split(":"))
.map(s->Integer.parseInt(s)).toArray();
return hhmmss;
}
但是运行时系统(我认为)抱怨无法执行显式类型转换(integer[])
。
int[] hhmmss= Arrays.stream(time.split(":")
.mapToInt(Integer::parseInt).toArray();
对于第一种情况,stream#map()
方法将为您提供一个stream
,然后stream#toarray()
返回一个对象[]
,您需要将其强制转换为integer[]
。但是在运行时,如果在内部创建对象[]
而不是整数[]
,这种强制转换可能会失败,这里就是这种情况。此流的toarray()
方法的源代码如下所示:
@Override
public final Object[] toArray() {
return toArray(Object[]::new);
}
并且不能将对象[]
强制转换为整数[]
引用。
您可以通过使用流#ToArray(IntFunction)
来解决这个问题,这样就不需要强制转换:
private Integer[] parseTime (String time){
Integer[] hhmmss = Arrays.stream(time.split(":"))
.map(s->Integer.valueOf(s))
.toArray(Integer[]::new);
return hhmmss;
}
主要内容:1 Java8 类型推断的介绍,2 Java8 类型推断的案例1,3 Java8 类型推断的案例21 Java8 类型推断的介绍 类型推断是Java的一项功能,它使编译器可以查看每个方法调用和相应的声明以确定参数的类型。 Java在Java 8中提供了类型推断的改进版本。 1.1 Java8以前 在下面的声明中,我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里,您可以将第二面留为<>,并且编译器将通过引用变量的类型来推断其类型。 1.2 Java8以后
我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码
我有一个复杂的要求,列表中记录有注释。我们有一个报告的功能,每个变化都应该被记录和报告。因此,根据我们的设计,即使单个字段已更新,我们也会创建一个全新的记录。 现在,我们希望将注释的历史记录(按时间戳反向排序)存储在数据库中。运行查询后,我得到了评论列表,但它包含重复的条目,因为其他一些字段被更改。它还包含空条目。 我编写了以下代码来删除重复和空条目。 这个逻辑工作正常,现在已经过测试了,但是我想
要允许您传播关于已生成消息的内容类型的信息,默认情况下,Spring Cloud Stream附加contentType标头到出站消息。对于不直接支持头文件的中间件,Spring Cloud Stream提供了自己的自动将邮件包裹在自己的信封中的机制。对于支持头文件的中间件,Spring Cloud Stream应用程序可以从非Spring Cloud Stream应用程序接收具有给定内容类型的消
在我的jOOQ配置文件中,我为日期字段定义了一个转换器,但是在forcedType的节中定义类型的条件时遇到了一些问题。 对于测试,我使用了表达式: 以及在类型上: 我希望匹配数据类型为DATE的所有列。取而代之的是,它不匹配任何一个列,除了一个类型为DATE的列之外,就像其他不匹配的列一样,但这个列的def:CURRENT DATE列似乎与此匹配。 为了让它工作,我必须使用: 有人能给我解释一下
枚举对象 积极vs懒惰 流 10.1-枚举类型 Elixir提供了枚举类型(enumerables)的概念,使用Enum模块操作它们。我们已经介绍过两种枚举类型:列表和图。 iex> Enum.map([1, 2, 3], fn x -> x * 2 end) [2, 4, 6] iex> Enum.map(%{1 => 2, 3 => 4}, fn {k, v} -> k * v end) [2