国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

über Lambda-Ausdrücke, statische Methodenreferenzen und Stream-API-Iteration in den neuen Funktionen von Java8
世界只因有你
世界只因有你 2017-05-17 10:04:45
0
2
889

Ich bin neu in der Java8-Syntax und habe bereits ein vorl?ufiges Verst?ndnis für die Verwendung von lambda表達(dá)式,1.8的靜態(tài)方法引用表示法以及1.8的streamapi中forEach()-Referenzen allein, aber w?hrend der übung bin ich auf den folgenden Code gesto?en:

public class Java8 {
private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());

public static NavigableSet<String> getUniqueAndNavigableLowerCaseMakeNames(VehicleLoader vehicleLoader) {
        Region[] regions = Region.values();
        final CountDownLatch latch = new CountDownLatch(regions.length);

        final Set<VehicleMake> uniqueVehicleMakes = new HashSet<>();
        for (Region region : regions) {
            EXECUTOR.submit(new Runnable() {
                @Override public void run() {
                    List<VehicleMake> regionMakes = vehicleLoader.getVehicleMakesByRegion(region.name());
                    if (regionMakes != null) {
                        uniqueVehicleMakes.addAll(regionMakes);
                    }
                    latch.countDown();
                }
            });
        }
        try {
            latch.await();
        } catch (InterruptedException ie) {
            Thread.currentThread().interrupt();
            throw new RuntimeException(ie);
        }

        NavigableSet<String> navigableMakeNames = new ConcurrentSkipListSet<>();
        for (VehicleMake make : uniqueVehicleMakes) {
            if (make.getName() == null) {
                continue;
            }
            navigableMakeNames.add(make.getName().toLowerCase());
        }
        return navigableMakeNames;
    }

 

Wenn für diesen Teil des Inhalts alles auf die Schreibmethode 1.8 umgeschrieben wird, wie sollte er dann auf die sch?nste Weise umgeschrieben werden? Wenn Sie beispielsweise für den neuen ausführbaren Teil lambda表達(dá)式再串聯(lián)著EXECUTOR::submid方法和Stearm.forEach() verwenden, erhalten Sie immer einen Syntaxfehler, und ich habe viele Informationen gesucht und hoffe, dass einige Senioren keine L?sung finden Verwenden Sie die Syntaxform 1.8, um den obigen Code zu kompilieren. Schreiben Sie ihn neu, um die neuen Funktionen von Java8 besser zu verstehen.

世界只因有你
世界只因有你

Antworte allen(2)
劉奇

看了一下,刨去異常處理,可以改寫為以下代碼:

return Arrays.stream(Region.values())
        .flatMap(region -> vehicleLoader.getVehicleMakesByRegion(region.name()).stream())
        .distinct()
        .filter(make -> make.getName() != null)
        .collect(Collectors.toCollection(ConcurrentSkipListSet::new));
某草草

先把 匿名內(nèi)部類改成 箭頭函數(shù) 在將for改為forEach

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage