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

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

3
LocalDateをSQL Date Javaに変換する方法は?
LocalDateをに変換するにはどうすればよいjava.sql.Dateですか? 試み: Record r = new Record(); LocalDate date = new Date(1967, 06, 22); r.setDateOfBirth(new Date(date)); これは失敗し(コンパイルされません)、見つけることができるのはJoda時間のものだけです。 Java 8を使用しています

15
バッチ処理付きのJava 8ストリーム
アイテムのリストを含む大きなファイルがあります。 アイテムのバッチを作成し、このバッチでHTTPリクエストを作成します(すべてのアイテムがHTTPリクエストのパラメーターとして必要です)。私はforループを使用して非常に簡単にそれを行うことができますが、Java 8の愛好家として、Java 8のStreamフレームワークでこれを書いてみてください(そして、遅延処理の利点を享受します)。 例: List<String> batch = new ArrayList<>(BATCH_SIZE); for (int i = 0; i < data.size(); i++) { batch.add(data.get(i)); if (batch.size() == BATCH_SIZE) process(batch); } if (batch.size() > 0) process(batch); 長いことやりたい lazyFileStream.group(500).map(processBatch).collect(toList()) これを行う最善の方法は何でしょうか?

6
Java 8ストリームが空かどうかを確認する方法は?
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(); }

8
Java8で複数のフィールド名でグループ化する
POJOのフィールド名でオブジェクトをグループ化するためのコードを見つけました。以下はそのためのコードです: public class Temp { static class Person { private String name; private int age; private long salary; Person(String name, int age, long salary) { this.name = name; this.age = age; this.salary = salary; } @Override public String toString() { return String.format("Person{name='%s', age=%d, salary=%d}", name, age, salary); } } public …
95 java  java-8 

4
デフォルトのメソッドを持つインターフェースはいつ初期化されますか?
この質問に答えるためにJava言語仕様を検索しているときに、 クラスを初期化する前に、その直接のスーパークラスを初期化する必要がありますが、クラスによって実装されるインターフェースは初期化されません。同様に、インターフェイスのスーパーインターフェイスは、インターフェイスが初期化される前に初期化されません。 私自身の好奇心から、試してみましたが、予想通り、インターフェースInterfaceTypeが初期化されていませんでした。 public class Example { public static void main(String[] args) throws Exception { InterfaceType foo = new InterfaceTypeImpl(); foo.method(); } } class InterfaceTypeImpl implements InterfaceType { @Override public void method() { System.out.println("implemented method"); } } class ClassInitializer { static { System.out.println("static initializer"); } } interface InterfaceType { public …


5
Collections.sortがMergesortを使用し、Arrays.sortが使用しないのはなぜですか?
JDK-8(x64)を使用しています。Arrays.sort(プリミティブ)については、Javaのドキュメントで次のことがわかりました。 ソートアルゴリズムは、デュアルピボットであるクイックソートウラジミールYaroslavskiy、ジョン・ベントレー、とジョシュアBloch.`によって Collections.sort(オブジェクト)の場合、この「Timsort」を見つけました: この実装は、安定した適応可能な反復的なmergesortです...この実装は、指定されたリストを配列にダンプし、配列をソートし、リストを反復処理して、配列内の対応する位置から各要素をリセットします。 Collections.sort配列を使用している場合、なぜそれは単にArrays.sortデュアルピボットQuickSortを呼び出したり使用したりしないのですか?なぜ使うマージソートを?

5
Optional.ifPresent()の適切な使用法
Java 8のAPI のifPresent()メソッドを理解しようとしていOptionalます。 私は単純なロジックを持っています: Optional<User> user=... user.ifPresent(doSomethingWithUser(user.get())); しかし、これによりコンパイルエラーが発生します。 ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) もちろん、私はこのようなことをすることができます: if(user.isPresent()) { doSomethingWithUser(user.get()); } しかし、これは雑然としたnull小切手とまったく同じです。 コードをこれに変更すると: user.ifPresent(new Consumer<User>() { @Override public void accept(User user) { doSomethingWithUser(user.get()); } }); コードが汚れてきているので、以前のnullチェックに戻ることを考えさせられます。 何か案は?
94 java  lambda  java-8  optional 

6
Java 8では、なぜArrayListのデフォルトの容量がゼロになるのですか?
思い出しますが、Java 8以前は、デフォルトの容量ArrayListは10でした。 驚いたことに、デフォルト(void)コンストラクターに関するコメントには、まだ次のように書かれています。 Constructs an empty list with an initial capacity of ten. からArrayList.java: /** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when * first element is added. */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA …
93 java  arraylist  java-8 


1
completablefuture join vs get
違いは何であるCompletableFuture.get()とはCompletableFuture.join()? 以下は私のコードです: List<String> process() { List<String> messages = Arrays.asList("Msg1", "Msg2", "Msg3", "Msg4", "Msg5", "Msg6", "Msg7", "Msg8", "Msg9", "Msg10", "Msg11", "Msg12"); MessageService messageService = new MessageService(); ExecutorService executor = Executors.newFixedThreadPool(4); List<String> mapResult = new ArrayList<>(); CompletableFuture<?>[] fanoutRequestList = new CompletableFuture[messages.size()]; int count = 0; for (String msg : messages) { CompletableFuture<?> …

9
クラスは、Java環境のより新しいバージョンによってコンパイルされています
セレンスクリプトの実行中に、Eclipseコンソールに次のエラーメッセージが表示されます。 クラスは、より新しいバージョンのJava環境(クラスファイルバージョン53.0)によってコンパイルされています。このバージョンのJavaランタイムは、52.0までのクラスファイルバージョンのみを認識します。 Javaバージョン: 8 IDE: Eclipse Oxygen Firefoxバージョン: 46

6
HashMap Java 8の実装
次のリンクドキュメントに従って:Java HashMap実装 の実装HashMap(またはの拡張HashMap)と混同しています。私の質問は: まず static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; これらの定数はなぜ、どのように使用されますか?これについて明確な例をいくつか挙げたい。 彼らはこれでどのようにパフォーマンスの向上を達成していますか? 第二に のソースコードがHashMapJDKにある場合、次の静的内部クラスが見つかります。 static final class TreeNode<K, V> extends java.util.LinkedHashMap.Entry<K, V> { HashMap.TreeNode<K, V> parent; HashMap.TreeNode<K, V> left; HashMap.TreeNode<K, V> right; HashMap.TreeNode<K, V> prev; boolean red; TreeNode(int …

5
配列からストリーミングするときに整数を文字列にマッピングできないのはなぜですか?
このコードは動作します(Javadocで取得): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); これはコンパイルできません: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEAは、「ラムダ式の互換性のない戻り値の型文字列」があることを教えてくれます。 どうして ?そしてそれを修正するには?

3
_(アンダースコア)は予約済みのキーワードです
交換しました s次のラムダ式を次のようにました_: s -> Integer.parseInt(s) Eclipseコンパイラは言う: '_'は、ソースレベル1.8以降の予約キーワードであるため、識別子として使用しないでください。 JLS§3.9字句構造/キーワードには説明がありません。
92 java  lambda  java-8 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.