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

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

7
インスタントを文字列にフォーマット
新しいjava 8 time-apiとパターンを使用して、インスタントを文字列にフォーマットしようとしています: Instant instant = ...; String out = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(instant); 上記のコードを使用すると、サポートされていないフィールドに問題があるという例外が発生します。 java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra at java.time.Instant.getLong(Instant.java:608) at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) ...

6
ミリ秒単位の長いエポック時間からJava 8 LocalDateを作成するにはどうすればよいですか?
longエポックの開始からのミリ秒で表されるs として日付を返す外部APIがあります。 古いスタイルのJava APIを使用すると、単純Dateに Date myDate = new Date(startDateLong) Java 8のLocalDate/ LocalDateTimeクラスに相当するものは何ですか? 私はによって表される時点を変換に興味を持っていますlongしLocalDate、私の現在のローカルタイムゾーンで。

5
Java 8ストリームの.min()および.max():なぜこれがコンパイルされるのですか?
注:この質問は、以前のSOの質問であったデッドリンクに由来しますが、ここに行きます... このコードを参照してください(注:このコードは「機能しない」Integer::compareため、使用する必要があります-リンクされている質問から抽出しただけです)。 final ArrayList <Integer> list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); ののjavadocによる.min()と.max()、両方の引数がなければなりませんComparator。ただし、ここではメソッド参照はIntegerクラスの静的メソッドを参照しています。 では、なぜこれがまったくコンパイルされるのでしょうか?
215 java  java-8  java-stream 

8
なぜObjects.requireNonNull()を使用する必要があるのですか?
Oracle JDKの多くのJava 8メソッドはを使用することに注意しましたObjects.requireNonNull()。これNullPointerExceptionは、指定されたオブジェクト(引数)がnull。 public static <T> T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; } しかしNullPointerException、とにかくスローされますnullオブジェクトが逆参照。では、なぜこの余分なnullチェックを実行してスローする必要があるの NullPointerExceptionでしょうか。 1つの明白な答え(または利点)は、コードを読みやすくすることであり、私も同意します。Objects.requireNonNull()メソッドの最初に使用する他の理由を知りたいと思ってい ます。

2
Java 8インターフェースメソッドで「同期」が許可されない理由は何ですか?
Java 8では、次のように簡単に記述できます。 interface Interface1 { default void method1() { synchronized (this) { // Something } } static void method2() { synchronized (Interface1.class) { // Something } } } クラスでも使用できる完全な同期セマンティクスを取得します。ただし、synchronizedメソッド宣言では修飾子を使用できません。 interface Interface2 { default synchronized void method1() { // ^^^^^^^^^^^^ Modifier 'synchronized' not allowed here } static synchronized void method2() { …

9
Java8:Stream / Map-Reduce / Collectorを使用してHashMap <X、Y>からHashMap <X、Z>へ
単純なJava ListをY-&gt; から「変換」する方法を知っていますZ。つまり、 List&lt;String&gt; x; List&lt;Integer&gt; y = x.stream() .map(s -&gt; Integer.parseInt(s)) .collect(Collectors.toList()); 今、私はマップと基本的に同じことをしたいと思います、すなわち: INPUT: { "key1" -&gt; "41", // "41" and "42" "key2" -&gt; "42 // are Strings } OUTPUT: { "key1" -&gt; 41, // 41 and 42 "key2" -&gt; 42 // are Integers } ソリューションはString-&gt;に限定されるべきではありませんInteger。List上記の例のように、任意のメソッド(またはコンストラクター)を呼び出します。

13
Java 8を使用してオブジェクトのリストをtoString()メソッドから取得した文字列に変換する
Java 8には多くの便利な新機能があります。たとえば、オブジェクトのリストに対してストリームを反復処理して、Objectのインスタンスの特定のフィールドの値を合計できます。例えば public class AClass { private int value; public int getValue() { return value; } } Integer sum = list.stream().mapToInt(AClass::getValue).sum(); したがって、インスタンスからのメソッドStringの出力をtoString()1行で連結するを構築する方法があるかどうかを尋ねています。 List&lt;Integer&gt; list = ... String concatenated = list.stream().... //concatenate here with toString() method from java.lang.Integer class その仮定listの整数を含む1、2と3私は期待して、concatenatedあります"123"か"1,2,3"。

8
`Optional.orElse()`と `Optional.orElseGet()`の違い
Optional&lt;T&gt;.orElse()とOptional&lt;T&gt;.orElseGet()メソッドの違いを理解しようとしています。 orElse()メソッドの説明は、「存在する場合は値を返し、それ以外の場合は返す」です。 一方、orElseGet()メソッドの説明は、「存在する場合は値を返し、それ以外の場合は他を呼び出して、その呼び出しの結果を返す」です。 このorElseGet()メソッドは、基本的にパラメーターをとらずにを返すサプライヤー機能インターフェースを取りますT。 どの状況で使用する必要がありますorElseGet()か?あなたは、メソッドを持っている場合はT myDefault()、あなただけはしないだろう理由optional.orElse(myDefault())ではなくoptional.orElseGet(() -&gt; myDefault())? orElseGet()ラムダ式の実行を後で延期しているようには見えないので、それの意味は何ですか?(私はそれがより安全に返された場合、それはより有用であろうと思っているだろうOptional&lt;T&gt;そのget()投げたことがないNoSuchElementExceptionとisPresent()常にtrueを返します...しかし、明らかにそのない、それだけを返すTようにorElse())。 私が見逃している他の違いはありますか?
206 java  java-8  optional 

23
Java「ラムダ式はこの言語レベルではサポートされていません」
ここに示すように、Java 8のいくつかの新機能をテストし、サンプルをIDE(元々はEclipse、次にIntelliJ)にコピーしました Eclipseはラムダ式をまったくサポートしていません。IntelliJはエラーを報告し続けました ラムダ式はこの言語レベルではサポートされていません これがインストール、コード、またはサポートの問題かどうかを知りたいのですが。

4
Java 8ストリームと配列の操作
新しいJava 8ストリーム機能を発見しました。Pythonから来て、2つの配列を「1行のpythonic」のように乗算する、合計のような配列の操作を実行するためのきちんとした方法があるかどうか疑問に思いました。 ありがとう


2
CompletableFuture、Future、RxJavaのObservableの違い
私はとの違いを知りたいのですが CompletableFuture、FutureとObservable RxJava。 私が知っていることはすべて非同期ですが Future.get() スレッドをブロックします CompletableFuture コールバックメソッドを提供します RxJava Observable--- CompletableFuture他の利点と同様(不明) たとえば、クライアントが複数のサービス呼び出しを行う必要があり、Futures(Java)を使用する場合、Future.get()順次実行されます... RxJavaでそれがどのように優れているかを知りたいです。 そして、ドキュメントhttp://reactivex.io/intro.htmlは言う Futuresを使用して条件付き非同期実行フローを最適に構成することは困難です(または各リクエストのレイテンシは実行時に変化するため不可能です)。もちろん、これは可能ですが、すぐに複雑になり(エラーが発生しやすくなる)、Future.get()で途中でブロックされ、非同期実行の利点がなくなります。 RxJavaこの問題をどのように解決するかを知りたいと本当に思っています。ドキュメントから理解するのは難しいと思いました。

8
Java 8-リストを変換する最良の方法:マップまたはforeach?
私は、リスト持ってmyListToParse、私は要素をフィルタリングし、各要素に対してメソッドを適用して、別のリストに結果を追加したいですmyFinalList。 Java 8では、2つの方法で実行できることに気付きました。それらの間のより効率的な方法を知り、なぜ一方が他方よりも優れているのかを理解したいと思います。 私は、第三の方法についての提案をお待ちしています。 方法1: myFinalList = new ArrayList&lt;&gt;(); myListToParse.stream() .filter(elt -&gt; elt != null) .forEach(elt -&gt; myFinalList.add(doSomething(elt))); 方法2: myFinalList = myListToParse.stream() .filter(elt -&gt; elt != null) .map(elt -&gt; doSomething(elt)) .collect(Collectors.toList());
188 java  java-8  java-stream 

9
Java 8ラムダVoid引数
Java 8に次の機能インターフェースがあるとします。 interface Action&lt;T, U&gt; { U execute(T t); } そして、いくつかのケースでは、引数や戻り値のないアクションが必要です。だから私はこのようなものを書きます: Action&lt;Void, Void&gt; a = () -&gt; { System.out.println("Do nothing!"); }; しかし、それは私にコンパイルエラーを与えます、私はそれを次のように書く必要があります Action&lt;Void, Void&gt; a = (Void v) -&gt; { System.out.println("Do nothing!"); return null;}; 醜いです。Void型パラメーターを取り除く方法はありますか?
188 java  lambda  java-8  void 

19
述語でストリームを制限する
Stream最初の要素が述語と一致しないまで(潜在的に無限)を制限するJava 8ストリーム操作はありますか? Java 9 takeWhileでは、以下の例のように使用して、10未満のすべての数値を出力できます。 IntStream .iterate(1, n -&gt; n + 1) .takeWhile(n -&gt; n &lt; 10) .forEach(System.out::println); Java 8にはそのような操作がないので、一般的な方法でそれを実装する最良の方法は何ですか?
187 java  java-8  java-stream 

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