相关疑难解决方法(0)

Java Set保留订单?

Java Set是否保留订单?一个方法正在向我返回一个Set,并且假设数据是有序的但是迭代了Set,数据是无序的.有没有更好的方法来管理这个?是否需要更改方法以返回除Set之外的其他内容?

java sorting set

158
推荐指数
7
解决办法
17万
查看次数

Java Streams:如何做一个有效的"独特和排序"?

让我们假设我有一个Stream<T>并且想要只获得不同的元素并进行排序.

天真的方法是做到以下几点:

Stream.of(...)
    .sorted()
    .distinct()
Run Code Online (Sandbox Code Playgroud)

或者,也许相反:

Stream.of(...)
    .distinct()
    .sorted()
Run Code Online (Sandbox Code Playgroud)

由于JDK的源代码无法实现这两者的实现,我只是想知道可能的内存消耗和性能影响.

或者编写我自己的过滤器会更有效率如下?

Stream.of(...)
    .sorted()
    .filter(noAdjacentDuplicatesFilter())

public static Predicate<Object> noAdjacentDuplicatesFilter() {
    final Object[] previousValue = {new Object()};

    return value -> {
        final boolean takeValue = !Objects.equals(previousValue[0], value);
        previousValue[0] = value;
        return takeValue;
    };
}
Run Code Online (Sandbox Code Playgroud)

java performance java-8 java-stream

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

本地类型推断与实例

我试图扫描JEP-286关于本地类型推断.我看到这只适用于局部变量 - 理解.所以这确实有效:

public class TestClass {
    public static void main(String [] args){
        var list = new ArrayList<>();
        list.add("1");
        System.out.println(list.get(0)); // 1
    }  
}
Run Code Online (Sandbox Code Playgroud)

我确实看到这另一方面没有编译:

public class TestClass {
    public var list = new ArrayList<>();
    public static void main(String [] args){

    }
}
Run Code Online (Sandbox Code Playgroud)

很明显它没有,因为JEP这样说.现在我的问题:

对于宣布为var失败的公共/受保护成员,至少是IMO,这是完全合理的.但是为什么它不能编译,即使它是private?我只能假设你仍然可以通过反射获得该变量(我不能得到这样的局部字段)......并且获得该变量需要一个演员,好吧,一个非常困惑的演员可能.

type-inference java-10

7
推荐指数
4
解决办法
280
查看次数