タグ付けされた質問 「java-8」

このタグは、2014年3月18日にリリースされたJavaプラットフォームのバージョン8(内部番号1.8)であるJava 8に固有の質問に使用します。ほとんどの場合、javaタグも指定する必要があります。

4
Javaでは、複数のオブジェクトにフィルターを適用する述語を作成できますか?
同じエンティティオブジェクトのリストをフィルタリングするために使用する述語があります。 Predicate<DWHDeal> companyFilter = i -> i.getCompany().equals(company); 以前のエンティティに基づいてDTOSが構築されているDTOのリストに、まったく同じフィールドにまったく同じ条件で同じフィルターを適用する必要もあります。 Predicate<DWHDealDTO> companyFilterDTO = i -> i.getCompany().equals(company); 2つの異なる述語をインスタンス化せずにこれを達成することは可能ですか?できれば1つだけで実現したいPredicateです。


6
JavaはYYYYMMDD形式で1年のすべての稼働日を取得します
私の日曜日の課題は、特定の年の稼働日を取得してCSVなどのファイルに保存することです。 次のコードがあり、私が直面している問題は、特定の形式で日付を印刷する方法です。つまり、コードは現在、Sat Jan 19 00:00:00 CET 2019のようなものを印刷するため、YYYYMMDDです。 また、週末を除外できる場合、および一般的にJava 8ではるかに短いコードを記述するより良い方法がある場合。 import java.io.*; import java.util.*; import java.text.SimpleDateFormat; public class DatesInYear { public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); public static void main (String[] args) throws java.lang.Exception { Date dt = new Date(); System.out.println(dt); List<Date> dates = printDates("20190101","20191231"); Collections.reverse(dates); System.out.println(dates.size()); for(Date date:dates) { …
8 java  date  time  java-8 

2
ストリームパイプラインでのデータベースへの保存
オラクルのウェブサイトのドキュメントによると: ストリーム操作に対する動作パラメータの副作用は、一般に推奨されません。これらは、無意識の要件の意図しない違反や、その他のスレッドセーフティの危険につながることが多いためです。 これには、ストリームの要素をデータベースに保存することも含まれますか? 次の(疑似)コードを想像してみてください。 public SavedCar saveCar(Car car) { SavedCar savedCar = this.getDb().save(car); return savedCar; } public List<SavedCars> saveCars(List<Car> cars) { return cars.stream() .map(this::saveCar) .collect(Collectors.toList()); } この実装に対抗する望ましくない影響は何ですか? public SavedCar saveCar(Car car) { SavedCar savedCar = this.getDb().save(car); return savedCar; } public List<SavedCars> saveCars(List<Car> cars) { List<SavedCars> savedCars = new ArrayList<>(); for …

3
Java 8を使用したポリモーフィズムのリファクタリング
Java 8を使用してリファクタリングする必要がある古いコードベースがあるため、現在のサイトがプラットフォームをサポートしているかどうかを示すインターフェイスがあります。 public interface PlatformSupportHandler { public abstract boolean isPaltformSupported(String platform); } それを実装する複数のクラスがあり、各クラスが異なるプラットフォームをサポートしています。 実装クラスのいくつかは次のとおりです。 @Component("bsafePlatformSupportHandler") public class BsafePlatoformSupportHandler implements PlatformSupportHandler { String[] supportedPlatform = {"iPad", "Android", "iPhone"}; Set<String> supportedPlatformSet = new HashSet<>(Arrays.asList(supportedPlatform)); @Override public boolean isPaltformSupported(String platform) { return supportedPlatformSet.contains(platform); } } 別の実装: @Component("discountPlatformSupportHandler") public class DiscountPlatoformSupportHandler implements PlatformSupportHandler{ String[] …
8 java  spring  java-8 

3
Java関数のパラメーターにオプションのインターフェースが必要ですか?
Java(バージョン8)には2つのインターフェースがあり、非常によく似ています。インターフェイスを変更したり、それらを実装するクラスを変更したりすることはできません。 public interface A { int get(); } public interface B { int get(); int somethingelse(); } 今、私はその実装が両方のインターフェースに(ほぼ)フィットする関数を持っています。私はそれがそのようなことをしたいと思っています: public int foo((A | B) p) { int ret = 0; if (p instanceof B) { ret = p.somthingelse(); } return ret + p.get(); } この関数はプログラムのメインパイプラインにあるため、インスペクションを使用したくありません。良い性能が欲しいです。Javaでこれを行うことは可能ですか? 編集: 簡単な解決策は、コピー/貼り付けしてfoo()、インターフェイスごとに異なる方法で実装することです。しかし、実際foo()には、インターフェースはそれよりもはるかに長く、コードの重複を避けようとしています。
8 java  generics  java-8 

6
インデックス/範囲でループを強化したJava 8
Javaの拡張forループでインデックス/範囲を指定することは可能ですか? 例えば私はリストを持っています: List<String> list; そして、0ではなくインデックス1からforループを実行したいと思います。 for(String s : list(start from index 1)) またはインデックス5まで for(String s : list(end at index 5)) 従来のforループを使用したり、拡張forループ内にカウンターを保持したりできることはわかっていますが、Javaまたはapacheコレクションにすぐに使えるものがあるのか​​知りたいのですが?

2
ラムダコールはどのようにインターフェイスと相互作用しますか?
以下に示すコードスニペットは機能します。ただし、なぜ機能するのかはわかりません。ラムダ関数が情報をインターフェイスに渡す方法のロジックを完全には理解していません。 制御はどこに渡されますか?コンパイラーnは、ループ内のそれぞれとmessage作成されたものをどのように理解していますか? このコードはコンパイルされ、期待される結果が得られます。どうすればいいのか分かりません。 import java.util.ArrayList; import java.util.List; public class TesterClass { public static void main(String[] args) { List<String> names = new ArrayList<>(); names.add("Akira"); names.add("Jacky"); names.add("Sarah"); names.add("Wolf"); names.forEach((n) -> { SayHello hello = (message) -> System.out.println("Hello " + message); hello.speak(n); }); } interface SayHello { void speak(String message); } }

4
Collectors.toMapまたはgroupingByを使用して、マップのマップ操作の結果を収集する
タイプのリストがList<A>あり、マップ操作List<B>で、1つのリストにマージされたすべてのA要素のタイプの集合リストを取得します。 List<A> listofA = [A1, A2, A3, A4, A5, ...] List<B> listofB = listofA.stream() .map(a -> repo.getListofB(a)) .flatMap(Collection::stream) .collect(Collectors.toList()); フラットマップなし List<List<B>> listOflistofB = listofA.stream() .map(a -> repo.getListofB(a)) .collect(Collectors.toList()); タイプのマップとして結果を収集したい Map<A, List<B>>と、これまでに様々にしようとCollectors.toMapか、Collectors.groupingBy望ましい結果を得ることができたオプションはありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.