为什么IntStream.sum()返回一个int值?这是一些概念上的错误吗?从示例数组创建流时:
int A[] = {2^31-5, 2, 2, 2};
Run Code Online (Sandbox Code Playgroud)
所有元素的总和超过最大整数值,但不会抛出异常.有人知道如何预防这种情况吗?
我正在创建一个存储java.time.LocalDate对象的堆程序.虽然我在为LocalDate创建临时变量时遇到了麻烦.我可能犯了一个小错误,但这是我的代码
private void trickleUp(int n) {
int pIndex;
if (n != 0) {
pIndex = getParentIndex(n);
if (heapA[pIndex].isAfter(heapA[n])) {
LocalDate temp = new LocalDate(heapA[pIndex]);
heapA[pIndex] = heapA[n];
heapA[n] = temp;
trickleUp(pIndex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到错误'构造函数LocalDate(LocalDate)未定义'
有人知道 - 是否可以保存Spark的Naive Bayes分类器的训练模型(例如在文本文件中),并在将来加载它(如果需要)?
谢谢.
我想创建一个函数来获取Class的参数并返回T的实例,
所以我有这个签名:
public <T> T foo(Class<T> clazz) {}
Run Code Online (Sandbox Code Playgroud)
现在,假设我想限制Class<T>并仅接受<T extends Command>,所以我尝试了这个:
public <T> T foo(Class<T extends Command> clazz) {}
Run Code Online (Sandbox Code Playgroud)
但是,我的班级Command也是模板如下:Command<S extends ModuleContex>
所以我试试这个:
public <T> T foo(Class<T extends Command<S extends ModuleContext>> clazz) {}
Run Code Online (Sandbox Code Playgroud)
但这不编译!
如何正确写?
在这个答案中,我尝试创建一个静态实用程序方法,使其List成为Map:
public static <K, T> Map<K, T> toMapBy(List<T> list,
Function<? super T, ? extends K> mapper) {
return list.stream().collect(Collectors.toMap(mapper, Function.identity()));
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好.但是,我发现该方法不能在与list.stream().collect(...)表达式相同的上下文中使用.该方法不够灵活.
List<Student> students = Arrays.asList();
Map<Long, Student> studentsById1 = students.stream()
.collect(Collectors.toMap(Student::getId, Function.identity()));
Map<Long, Student> studentsById2 = toMapBy(students, Student::getId);
Map<Long, Person> peopleById1 = students.stream()
.collect(Collectors.toMap(Student::getId, Function.identity()));
Map<Long, Person> peopleById2 = toMapBy(students, Student::getId); // compile error!
Run Code Online (Sandbox Code Playgroud)
在这个例子中,Student是一个子类型,Person并有一个getId返回a 的方法Long.
最后一个语句失败incompatible types: inference variable T has …
老实说,除了相邻的代码行之外,我还不确定这是否可行.但是,我想我会和社区核实一下.
Java 8允许通过Stream API管理其集合.我们以前需要外部迭代的地方,现在我们可以简单地使用:
<Collection>.stream().forEach([expression]);
Run Code Online (Sandbox Code Playgroud)
当我尝试快速格式化大型集合时,这很好,比如,将它输出到BufferedOutputStream或其他目标.我需要做的是在我旁边写一些关于我正在写的内容的信息.到目前为止,我能想到的最好的是:
labelData();
firstNames.stream().sequential().forEach(sz -> reportData(sz));
Run Code Online (Sandbox Code Playgroud)
然而,如果我可以这样的话,那将是非常好的:
firstNames.stream().sequential().
.onOpen(labelData())
.forEach(sz->reportData(sz));
Run Code Online (Sandbox Code Playgroud)
我知道可以使用BaseStream.onClose(Runnable closeHandler)设置一个on-close方法.这种方法是否存在开放?
谢谢你的时间.
相关问题:
由于我们有可以包含默认方法的接口,将Observable更改为接口不是更好的主意吗?从功能的角度来看,Observable"做了一件事"但不是"是一件事".它应该改为Java 8中的接口正确吗?
假设我有两个类C1和C2,其中C2由C1的构造函数使用:
public class C1
{
public C1( C2 o2 ){ ... }
public String getProperty()
{
String result;
...
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有了一个C2对象列表(列表列表),我想使用从流C2对象创建的C1的getProperty()上的条件来流式传输和过滤。
有没有办法用流来做到这一点?
List<C2> list = ...
List<C2> result = list.stream().filter( XXXX )
Run Code Online (Sandbox Code Playgroud)
我猜我应该有XXXX,它使用流中的C2对象创建一个C1对象并比较其getProperty()(例如,“ value” .equals(o2.getProperty()))
这有可能吗?
这是如何从字节数组创建IntStream的后续问题?
我创建了一个方法将给定的字节数组转换为连接的十六进制字符
static String bytesToHex(final byte[] bytes) {
return IntStream.rang(0, bytes.length * 2)
.map(i -> (bytes[i / 2] >> ((i & 0x01) == 0 ? 4 : 0)) & 0x0F)
.mapToObj(Integer::toHexString)
.collect(joining());
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,不使用任何第三方库,上面的代码是否足够有效?我做错了什么或不必要的吗?
是否可以在树视图中隐藏节点(对Root起作用的方式相同)而不必从树本身中删除节点?目的是能够在树的某些项目上提供过滤器和“显示/隐藏”选项。
所有帮助表示赞赏
谢谢
java-8 ×10
java ×8
java-stream ×3
lambda ×2
apache-spark ×1
constructor ×1
date ×1
generics ×1
handler ×1
hex ×1
java-time ×1
javafx ×1
treeview ×1