标签: java-8

IntStream.sum()异常处理

为什么IntStream.sum()返回一个int值?这是一些概念上的错误吗?从示例数组创建流时:

int A[] = {2^31-5, 2, 2, 2};
Run Code Online (Sandbox Code Playgroud)

所有元素的总和超过最大整数值,但不会抛出异常.有人知道如何预防这种情况吗?

java java-8

1
推荐指数
2
解决办法
1291
查看次数

在堆中创建`LocalDate`(java.time)时出错

我正在创建一个存储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)未定义'

java constructor date java-8 java-time

1
推荐指数
1
解决办法
577
查看次数

保存Spark的Naive Bayes分类器的训练模型

有人知道 - 是否可以保存Spark的Naive Bayes分类器的训练模型(例如在文本文件中),并在将来加载它(如果需要)?

谢谢.

java-8 apache-spark

1
推荐指数
1
解决办法
1676
查看次数

如何在Java中声明泛型方法

我想创建一个函数来获取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)

但这不编译!

如何正确写?

java java-8

1
推荐指数
1
解决办法
198
查看次数

通用静态方法过多地约束类型

这个答案中,我尝试创建一个静态实用程序方法,使其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 generics java-8

1
推荐指数
1
解决办法
424
查看次数

在任何其他中间方法之前,如何在打开Java 8流时运行单个函数?

老实说,除了相邻的代码行之外,我还不确定这是否可行.但是,我想我会和社区核实一下.

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方法.这种方法是否存在开放?

谢谢你的时间.

java handler java-8 java-stream

1
推荐指数
1
解决办法
177
查看次数

为什么Observable仍然是Java 8中的一个类?

相关问题:

为什么java.util.Observable不是抽象类?

由于我们有可以包含默认方法的接口,将Observable更改为接口不是更好的主意吗?从功能的角度来看,Observable"做了一件事"但不是"是一件事".它应该改为Java 8中的接口正确吗?

java java-8

1
推荐指数
2
解决办法
1378
查看次数

java 8 stream groupBy和创建新对象

假设我有两个类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()))

这有可能吗?

java lambda java-8 java-stream

1
推荐指数
1
解决办法
354
查看次数

使用lambdas和流从字节数组中获取十六进制字符串的有效方法

这是如何从字节数组创建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)

我的问题是,不使用任何第三方库,上面的代码是否足够有效?我做错了什么或不必要的吗?

lambda hex java-8 java-stream

1
推荐指数
1
解决办法
1219
查看次数

TreeView Java FX:隐藏节点

是否可以在树视图中隐藏节点(对Root起作用的方式相同)而不必从树本身中删除节点?目的是能够在树的某些项目上提供过滤器和“显示/隐藏”选项。

所有帮助表示赞赏

谢谢

java treeview javafx java-8

1
推荐指数
1
解决办法
2718
查看次数