Javaでcharアレイから文字のストリームを作成する
この投稿では、Javaでプリミティブ文字アレイから文字のストリームを作成する方法について説明します。
Javaは Stream
, IntStream
, LongStream
、 と DoubleStream
オブジェクトとプリミティブint、longおよびdouble型を介してストリームを取得するクラス。 Javaは、プリミティブcharのcharストリームを提供しません。したがって、応募できません Arrays.stream()
方法 char[]
アレイ。しかし、私たちは得ることができます IntStream
(intのストリーム)文字のストリームとそれを使用して生成 Stream<Characters>
.
1.Stringオブジェクトを使用する
を取得するための簡単なソリューション IntStream
を使用して文字の String.chars()
方法。取得後 IntStream
文字の、それをボックスに入れます Stream<Character>
ラムダ式を使用してcharをキャストする i -> (char) i
中身 mapToObj()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) { char[] chars = {'a', 'b', 'c', 'd'}; Stream<Character> charStream = new String(chars).chars().mapToObj(i -> (char)i); System.out.println(charStream.collect(Collectors.toList())); } } |
出力:
[a, b, c, d]
2.使用する IntStream.range()
別の選択肢は取得することです IntStream
インデックスの使用 IntStream.range()
方法。取得後 IntStream
、ボックスに Stream<Character>
ラムダ式を使用してcharをキャストする i -> chars[i]
中身 mapToObj()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; public class Main { public static void main(String[] args) { char[] chars = {'a', 'b', 'c', 'd'}; Stream<Character> charStream = IntStream.range(0, chars.length) .mapToObj(i -> chars[i]); System.out.println(charStream.collect(Collectors.toList())); } } |
出力:
[a, b, c, d]
3.使用する CharBuffer.wrap()
方法
プリミティブ文字アレイからIntStreamを作成する別のもっともらしい方法は、 CharBuffer
。取得後 IntStream
文字の、それをボックスに入れます Stream<Character>
ラムダ式を使用してcharをキャストする i -> (char) i
中身 mapToObj()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.nio.CharBuffer; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) { char[] chars = {'a', 'b', 'c', 'd'}; Stream<Character> charStream = CharBuffer.wrap(chars).chars() .mapToObj(i -> (char)i); System.out.println(charStream.collect(Collectors.toList())); } } |
出力:
[a, b, c, d]
4.GuavaのCharsクラスを使用する
ここでのアイデアは、ボックス化された文字のリストを作成することです List<Character>
と派生 Stream<Character>
それから。あなたはGuavaを使うことができます Chars.asList()
プリミティブ文字アレイを次のようにラップするメソッド List<Character>
タイプ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import com.google.common.primitives.Chars; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) { char[] chars = {'a', 'b', 'c', 'd'}; Stream<Character> charStream = Chars.asList(chars).stream(); System.out.println(charStream.collect(Collectors.toList())); } } |
出力:
[a, b, c, d]
5.StreamBuilderの使用
最後に、Stream Builderを作成して、それに文字を追加できます。次に、 build()
取得する方法 Stream<Character>
それから。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) { char[] chars = {'a', 'b', 'c', 'd'}; Stream.Builder<Character> charStreamBuilder = Stream.builder(); for (char c: chars) { charStreamBuilder.accept(c); } Stream<Character> charStream = charStreamBuilder.build(); System.out.println(charStream.collect(Collectors.toList())); } } |
出力:
[a, b, c, d]
これで、Javaのプリミティブ文字アレイから文字のストリームを作成できます。