小编Was*_*leh的帖子

Stream <T>接口中filter()方法的实现在哪里?

亲爱的,亲爱的

我有下面的简单代码

class App {
    public static void main(String[] args) {

        ArrayList<Integer> myList = new ArrayList<>();

        myList.add(7);
        myList.add(18);
        myList.add(10);
        myList.add(24);
        myList.add(17);
        myList.add(5);

        Stream<Integer> stream = myList.stream();

        stream = stream.filter(n -> n > 10); // it returns a stream of elements more than 10

        stream.forEach(n -> System.out.print(n + " "));


    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码的功能是它过滤调用流,然后打印所有超过10的元素.Predicate中的测试方法为我们做了..那没关系..但过滤器的实际实现在哪里()方法确实返回超过10的"STREAM"..那是我不明白的!! !! 这个问题在某种程度上也适用于forEach()方法..如何迭代抛出流..

由于filter()和forEach()方法在接口流中是抽象的,因此没有实现.

我需要一个解释..

java abstract java-api java-8 java-stream

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

为什么我的代码在没有使用同步的情况下完美运行..?

我在操作系统中遇到了与我的代码行为混淆的问题.现在你们都有很多方法可以为多线程进行同步,以便无论如何都能获得正确的值!

为什么我总是得到正确的价值而不使用同步的方式??? !

例如,查看下面的代码

在常规行为中,下面的程序应该在几秒后终止..因为有十个线程访问同一个变量并将其递增一个......并且在某些情况下应该导致计数值不是100000 ...这将停止循环..我在20分钟内运行此代码..它完美地工作..

任何人都可以告诉我发生了什么:D ??

我的操作系统是Windows 7,我正在使用eclipse Kepler .. JVM是8 ..而我的CPU不是双核......它是一个常规的独奏......有2.4 GHZ ......

public class Worker {
    int count;

    public static void main(String[] args) {
        new Worker().run();
    }

    public void run() {
        do {
            count = 0;
            Thread thread1 = new Thread(new Runnable() {
                public void run() {
                    for (int i = 0; i < 10000; i++) {
                        count++;
                    }
                }
            });

            Thread thread2 = new Thread(new Runnable() {
                public void run() {
                    for (int i = …
Run Code Online (Sandbox Code Playgroud)

java windows cpu multithreading synchronization

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