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

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

6
Java8でラムダを使用してnullでない場合にのみ値をフィルタリングする
私は言うオブジェクトのリストがありますcar。Java 8を使用して、いくつかのパラメーターに基づいてこのリストをフィルター処理したいのですが、パラメーターがの場合はnull、がスローされNullPointerExceptionます。null値を除外する方法は? 現在のコードは次のとおりです requiredCars = cars.stream().filter(c -> c.getName().startsWith("M")); これはスローNullPointerExceptionあればgetName()リターンnull。

4
Java 8でストリームをキャストすることは可能ですか?
Java 8でストリームをキャストすることは可能ですか?オブジェクトのリストがあるとしましょう。次のようにして、追加のオブジェクトをすべて除外できます。 Stream.of(objects).filter(c -> c instanceof Client) この後、クライアントと何かをしたい場合は、それぞれをキャストする必要があります。 Stream.of(objects).filter(c -> c instanceof Client) .map(c -> ((Client) c).getID()).forEach(System.out::println); これは少し醜く見えます。ストリーム全体を別のタイプにキャストすることは可能ですか?にキャストStream<Object>するようなStream<Client>? このようなことはおそらく悪いデザインを意味するという事実を無視してください。私はコンピューターサイエンスのクラスでこのようなことをしているので、Java 8の新機能を調べていて、それが可能かどうか知りたいと思っていました。
160 java  java-8  java-stream 

5
ラムダをシリアル化する方法は?
ラムダをエレガントにシリアル化するにはどうすればよいですか? たとえば、次のコードはをスローしNotSerializableExceptionます。SerializableRunnable「ダミー」インターフェイスを作成せずに修正するにはどうすればよいですか? public static void main(String[] args) throws Exception { File file = Files.createTempFile("lambda", "ser").toFile(); try (ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file))) { Runnable r = () -> System.out.println("Can I be serialized?"); oo.writeObject(r); } try (ObjectInput oi = new ObjectInputStream(new FileInputStream(file))) { Runnable r = (Runnable) oi.readObject(); r.run(); } }

6
Javaラムダは複数のパラメーターを持つことができますか?
Javaでは、ラムダに複数の異なる型を受け入れることは可能ですか? つまり、単一の変数が機能します。 Function <Integer, Integer> adder = i -> i + 1; System.out.println (adder.apply (10)); Varargsも機能します。 Function <Integer [], Integer> multiAdder = ints -> { int sum = 0; for (Integer i : ints) { sum += i; } return sum; }; //.... System.out.println ((multiAdder.apply (new Integer [] { 1, …
157 java  lambda  java-8 

1
ZonedDateTimeとOffsetDateTimeの違いは何ですか?
ドキュメントを読みましたが、どちらを使用するべきかまだわかりません。 OffsetDateTime ZonedDateTime ドキュメントによるとOffsetDateTime、データベースに日付を書き込むときに使用する必要がありますが、理由はわかりません。
155 java  java-8  java-time 


10
Java 8で使用される機能インターフェースは何ですか?
私はJava 8で「機能的インターフェース」という新しい用語に出会いました。ラムダ式で作業しているときに、その使用法を1つしか見つけることができませんでした。 Java 8にはいくつかの組み込みの関数型インターフェースが用意されており、関数型インターフェースを定義したい場合は、@FunctionalInterfaceアノテーションを利用できます。これにより、インターフェイスで単一のメソッドのみを宣言できます。 例えば: @FunctionalInterface interface MathOperation { int operation(int a, int b); } ラムダ式を操作するだけでなく、Java 8でどれほど便利ですか? (ここでの質問は、私が尋ねたものとは異なります。ラムダ式を操作するときに関数型インターフェースが必要な理由を尋ねています。私の質問は、ラムダ式以外に関数型インターフェースに他の用途がある理由は何ですか。)
154 java  lambda  interface  java-8 

26
Java 8ストリームの逆順
一般的な質問:ストリームをリバースする適切な方法は何ですか?ストリームを構成する要素のタイプがわからない場合、ストリームを逆にする一般的な方法は何ですか? 具体的な質問: IntStream特定の範囲IntStream.range(-range, 0)で整数を生成するための範囲メソッドを提供します。これで、範囲を0から負に反転させたいので、機能しません。また、使用できません。Integer::compare List<Integer> list = Arrays.asList(1,2,3,4); list.stream().sorted(Integer::compare).forEach(System.out::println); IntStream私は、このコンパイラエラーを取得します エラー:(191、0)ajc:sorted()タイプのメソッドIntStreamは引数(Integer::compare)に適用できません ここで何が欠けていますか?

9
LocalDateTimeの解析時にTemporalAccessorからLocalDateTimeを取得できない(Java 8)
Java 8で日付文字列をDateTimeオブジェクトに変換しようとしています。次の行を実行すると、 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDateTime dt = LocalDateTime.parse("20140218", formatter); 次のエラーが発生します。 Exception in thread "main" java.time.format.DateTimeParseException: Text '20140218' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2014-02-18 of type java.time.format.Parsed at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) at java.time.LocalDateTime.parse(LocalDateTime.java:492) 構文はここで提案されているものと同じですが、例外があります。使用していJDK-8u25ます。

14
JDK8とラムダ(java.util.stream.Streams.zip)を使用したスト​​リームの圧縮
ラムダb93を使用するJDK 8では、ストリームを圧縮するために使用できるクラスjava.util.stream.Streams.zipがb93にありました(これは、チュートリアル「Java8ラムダを探索する」で説明されています。DhananjayNeneによるパート1)。この機能: 2つのストリームの要素を組み合わせた結果を要素とする、レイジーで順次結合されたStreamを作成します。 ただし、b98ではこれがなくなりました。実際には、Streamsクラスはb98のjava.util.streamでさえアクセスできません。 この機能は移動されましたか。移動されている場合、b98を使用してストリームを簡潔に圧縮するにはどうすればよいですか? 私が考えているアプリケーションは、このShenのJava実装にあります。 static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) (b98の機能を使用しない)かなり冗長なコードで機能します。

2
java8ストリームでの処理の順序を確実にする方法は?
XMLJavaオブジェクト内でリストを処理したい。受け取った順にすべての要素を処理する必要があります。 したがってsequential、stream私は使用するそれぞれを呼び出す必要がありますか? list.stream().sequential().filter().forEach() または、並列処理を使用しない限り、ストリームを使用するだけで十分ですか? list.stream().filter().forEach()
148 java  java-8  java-stream 

10
ストリームを2つのストリームに分割できますか?
Java 8ストリームで表されるデータセットがあります。 Stream<T> stream = ...; それをフィルタリングしてランダムなサブセットを取得する方法を見ることができます-たとえば Random r = new Random(); PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator(); Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0)); また、このストリームを削減して、たとえばデータセットの2つのランダムな半分を表す2つのリストを取得し、それらをストリームに戻す方法も確認できます。しかし、最初のストリームから2つのストリームを生成する直接的な方法はありますか?何かのようなもの (heads, tails) = stream.[some kind of split based on filter] 洞察をありがとう。
146 java  java-8  java-stream 


4
Java 8でのSpliterator、Collector、Streamについて
StreamJava 8 のインターフェースを理解するのに問題がSpliteratorありCollectorます。特に、とインターフェースに関係しているところです。私の問題はSpliterator、Collectorインターフェイスとインターフェイスをまだ理解できないことStreamです。その結果、インターフェイスはまだ少しあいまいです。 正確にはa Spliteratorとa は何Collectorですか?どのように使用できますか?私が自分で(SpliteratorまたはCollectorおそらくStreamそのプロセスで自分自身を)書こうと思っている場合、私は何をすべきで、何をすべきではありませんか? ウェブ上に散らばっているいくつかの例を読みましたが、ここにあるすべてのものはまだ新しく、変更される可能性があるため、例やチュートリアルはまだ非常にまばらです。

4
Java8でvoid(Voidではない)メソッドの関数型を指定する方法
私はJava 8をいじって、ファーストクラスの市民としてどのように機能するかを調べています。私は次のスニペットを持っています: package test; import java.util.*; import java.util.function.*; public class Test { public static void myForEach(List<Integer> list, Function<Integer, Void> myFunction) { list.forEach(functionToBlock(myFunction)); } public static void displayInt(Integer i) { System.out.println(i); } public static void main(String[] args) { List<Integer> theList = new ArrayList<>(); theList.add(1); theList.add(2); theList.add(3); theList.add(4); theList.add(5); theList.add(6); myForEach(theList, Test::displayInt); …
143 java  java-8 

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