小编Cep*_*pod的帖子

如何检查Java 8 Stream是否为空?

Stream作为非终端操作,如何检查a 是否为空并抛出异常(如果不是)?

基本上,我正在寻找与下面的代码等效的东西,但没有实现中间的流.特别是,在终端操作实际消耗流之前不应进行检查.

public Stream<Thing> getFilteredThings() {
    Stream<Thing> stream = getThings().stream()
                .filter(Thing::isFoo)
                .filter(Thing::isBar);
    return nonEmptyStream(stream, () -> {
        throw new RuntimeException("No foo bar things available")   
    });
}

private static <T> Stream<T> nonEmptyStream(Stream<T> stream, Supplier<T> defaultValue) {
    List<T> list = stream.collect(Collectors.toList());
    if (list.isEmpty()) list.add(defaultValue.get());
    return list.stream();
}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

83
推荐指数
6
解决办法
7万
查看次数

在Python中,对象和字典之间有什么区别?

创建对象后,我可以随意添加和删除插槽,就像我可以使用字典一样.甚至方法也只是存储在槽中的对象,所以我可能也可以将方法添加到字典中.

我可以用一个(非字典)对象做一些我永远不会用字典做的事情吗?或者是否可以设置一个完全看起来像某个类的对象的字典?

这个问题不是关于它们是如何创建的,而是关于我以后如何使用它们的问题.链接或参考表示赞赏.

python object-model

24
推荐指数
2
解决办法
5971
查看次数

如何将周数转换为日期?

鉴于一年和一个日历周,我怎样才能将该周的星期二作为约会?

mysql sql datetime

21
推荐指数
3
解决办法
3万
查看次数

xsd:如何使用无序的元素列表扩展类型

这是我的xml架构的一部分

<xs:complexType name="Friend">
    <xs:all>
        <xs:element name="name" type="xs:string" />
        <xs:element name="phone" type="xs:string" />
        <xs:element name="address" type="xs:string" />
    </xs:all>
</xs:complexType>

<xs:complexType name="Coworker">
    <xs:all>
        <xs:element name="name" type="xs:string" />
        <xs:element name="phone" type="xs:string" />
        <xs:element name="office" type="xs:string" />
    </xs:all>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

为了更好的可维护性,我希望在(抽象)超类型或类似的东西中具有共享属性.但更重要的是,我希望所有元素都是无序的,也是可选的.

这是可能的,最好的方法是什么?

xsd

9
推荐指数
2
解决办法
4429
查看次数

Java泛型:非法的前向引用

给定一个通用接口

interface Foo<A, B> { }
Run Code Online (Sandbox Code Playgroud)

我想编写一个实现,要求A成为B的子类.所以我想这样做

class Bar<A, B super A> implements Foo<A, B> { }
// --> Syntax error
Run Code Online (Sandbox Code Playgroud)

要么

class Bar<A extends B, B> implements Foo<A, B> { }
// --> illegal forward reference
Run Code Online (Sandbox Code Playgroud)

但似乎有效的唯一解决方案是:

class Bar<B, A extends B> implements Foo<A, B> { }
Run Code Online (Sandbox Code Playgroud)

这有点难看,因为它颠倒了通用参数的顺序.
这个问题有什么解决方案或解决方法吗?

java generics syntax-error

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

参数中带有通配符的模糊重载泛型方法

鉴于以下声明

interface Base<A> { }

interface Special<A,B> extends Base<A> { }

<T> void foo(Base<T> b) {}

<T> void foo(Special<?,T> s) {}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到以下代码的编译错误:

Special<String, Integer> s = null;
foo(s); // error: reference to foo is ambiguous
Run Code Online (Sandbox Code Playgroud)

顺便说一下,可以通过将第二种方法的声明改为来解决问题

<T,X> void foo(Special<X,T> s) {}
Run Code Online (Sandbox Code Playgroud)

java generics overloading overload-resolution

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

Java继承的返回类型

我有一个关于Java继承方法中的返回类型的问题。我有一个课和一个继承的课。在继承的类中,有一个特定的方法。它还从父类继承了一个返回其自身实例的方法。

我想要这样的类层次结构:

public class Foo {
    public Foo bar()
    {
        return this;
    }
}

public class FooInherited extends Foo {
    public Whatever baz()
    {
        return new Whatever();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以从其实例调用继承的方法,然后再调用特定的方法而不覆盖该方法以返回继承的类或显式转换类。

现在我想要一个这样的代码片段:

FooInherited foo = new FooInherited();
Whatever w = foo.bar().baz();
Run Code Online (Sandbox Code Playgroud)

我对此感到困难,但是我不确定在这种情况下Java是否为程序员提供了节省时间的机制。

java inheritance return-type

6
推荐指数
2
解决办法
3845
查看次数

懒惰的随机算法

我有一个很大的元素列表,我想以随机顺序迭代.但是,我无法修改列表,我也不想创建它的副本,因为1)它很大,2)可以预期迭代会提前取消.

List<T> data = ...;
Iterator<T> shuffled = shuffle(data);
while (shuffled.hasNext()) {
    T t = shuffled.next();
    if (System.console().readLine("Do you want %s?", t).startsWith("y")) {
        return t;
    }
}
System.out.println("That's all");
return t;
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个算法,上面的代码将运行O(n)(并且最好只需要O(log n)空格),因此缓存之前生成的元素不是一个选项.我不在乎算法是否有偏差(只要它不明显).

(我在我的问题中使用伪Java,但如果你愿意,你可以使用其他语言)

这是我到目前为止最好的.

Iterator<T> shuffle(final List<T> data) {
    int p = data.size();
    while ((data.size() % p) == 0) p = randomPrime();
    return new Iterator<T>() {
        final int prime = p;
        int n = 0, i = 0;
        public boolean hasNext() { return i < …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm shuffle lazy-evaluation

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

怎么把.p12转换成.crt文件?

谁能告诉我从.p12文件提取/转换证书.crt文件的正确方法/命令?经过搜索。我找到了如何将.pem转换为.crt的方法。但找不到.p12到.crt。

openssl certificate keytool p12

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

在Perl中,如何只替换字符串的第一个字符?

我不知道一点点Perl并且必须修复Perl脚本中的错误.

给定$myvar包含字符串的变量,如果第一个字符是点,则将其替换为"foo/bar".

我怎样才能做到这一点?
(如果你能猜到这个bug,可以获得奖励积分)

string perl

5
推荐指数
3
解决办法
6364
查看次数