Giriş
Şu satırı dahil ederiz.
IntStream Yaratma
1. Bir başka Stream'in mapToInt() metodu kullanılarak yaratılabilir.
Örnek
Şöyle yaparız.
2. IntSream Yaratma yazısındaki metodlar kullanılabilir.
asLongStream metodu
Şu satırı dahil ederiz.
import java.util.stream.IntStream;
Stream<T> arayüzünden kalıtır. Kendine özel metodları da mevcuttur.IntStream Yaratma
1. Bir başka Stream'in mapToInt() metodu kullanılarak yaratılabilir.
Örnek
Şöyle yaparız.
Stream<String> original=...
int sum=original.mapToInt(String::length).sum();
Örnek
Şöyle yaparız
List<String> list = new ArrayList<>();
list.add("00657");
list.add("00632");
list.add("00656");
list.add("01125");
int maxNum = list.stream()
.mapToInt(Integer::parseInt)
.max()
.orElse(-1);
asLongStream metodu
Örnek
Şöyle yaparız
int[] id = {12,345,566,33};
LongStream longStream = IntStream.of(id).asLongStream();
average metodu
Açıklaması şöyle.
boxed metodu
Stream<Integer> nesnesi döner.
Açıklaması şöyle.
A Stream<T> has no average() method, since the element type T can be any reference type, which doesn't necessarily have a meaning for calculation of the average of the Stream elements.SummaryStatistics yazısına taşıdım.
On the other hand, an IntStream has an average() method, since it has int elements, for which the average operation is well defined.
boxed metodu
Stream<Integer> nesnesi döner.
Örnek
Şöyle yaparız
List<Integer> result = IntStream
.rangeClosed(1, 10)
.boxed().
collect(Collectors.toList());
collect metoduİmzası şöyle. Yani Collector alamaz
<R> R collect(Supplier<R> supplier,
ObjIntConsumer<R> accumulator,
BiConsumer<R, R> combiner)
Şu kod derlenmez.private Map<String, Object> collectArguments() {
...
return IntStream.range(0, args.length)
.collect(Collectors.toMap(...));
}
boxed() metodu ile normal Stream sınıfın çevirmek için şöyle yaparız.return IntStream.range(0, args.length)
.boxed()
.collect(Collectors.toMap(...));
Bu collect metodunu kullanmak için şöyle yaparız.return IntStream.range(0, args.length)
.collect(HashMap::new,
(m,i)->m.put(argNames[i],args[i]),
Map::putAll);
findFirst metoduOptionalInt nesnesi döner
Örnek
Şöyle yaparız.
int result = IntStream
.range(100, 10000)
.filter(i -> ...)
.findFirst()
.getAsInt();
generate metoduIntSream Yaratma yazısına taşıdım.
iterate metodu - initial element + predicate
IntSream Yaratma yazısına taşıdım.
iterate metodu - initial element + has next predicate + next element
IntSream Yaratma yazısına taşıdım.
map metodu
int döner. Açıklaması şöyle
map of IntStream can only map an int value to another int value. It accepts an IntUnaryOperator (which accepts an int and returns an int) as the mapper function, and returns an IntStream.Örnek
Aslında bu kod skip(), limit() gibi bir çok metod için de örnek olabilir.
System.out.println(Arrays.toString(
IntStream.rangeClosed(1, 20).skip(9).limit(10).map((new IntUnaryOperator() {
@Override
public int applyAsInt(int operand) {
return operand - 1;
}
}).andThen(new IntUnaryOperator() {
@Override
public int applyAsInt(int operand) {
return operand * 2;
}
})).toArray()));
mapToDouble metodu
Şöyle yaparız.
int tipini başka bir tipe cast etmek için kullanılır.
Örnek
Şöyle yaparız
Şöyle bir listemiz olsun.
IntSream Yaratma yazısına taşıdım.Şöyle yaparız.
double[] sequence = IntStream.range(200000, 400000)
.mapToDouble( i -> i * 0.001).toArray();
mapToInt metodu
int döner
Örnek
Şöyle yaparız
int[] result1 = result
.stream()
.mapToInt(a -> a)
.toArray();
mapToObj metodu
Örnek
Şöyle yaparız
var s = IntStream.rangeClosed(1,5).mapToObj(String::valueOf).collect(Collectors.toList());
ÖrnekŞöyle bir listemiz olsun.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
Bu listeyi stream'e çevirirsek IntStream elde ederiz. int tipini Int'e çevirmek için de mapToObj kullanmamız gerekir. ÖrnekString commaSeparatedNumbers = Arrays.stream(numbers)
.mapToObj(i -> ((Integer) i).toString()) //i is an int, not an Integer
.collect(Collectors.joining(", "));
max/min/sum metodu
Örnek
Şöyle yaparız
OptionalInt max = IntStream.of(1, 2, 3, 4, 5).max();
System.out.println(max.getAsInt());
OptionalInt min = IntStream.of(1, 2, 3, 4, 5).min();
System.out.println(max.getAsInt());
int sum = IntStream.of(1, 2, 3, 4, 5).sum();
System.out.println(sum);
range metodu
of metodu
IntSream Yaratma yazısına taşıdım.sorted metodu
Açıklaması şöyle.
Stream sınıfı gibi comparator almaz. Şöyle yaparız.Returns a stream consisting of the elements of this stream in sorted order.
Arrays.stream(intArray)
.mapToInt(x->x)
.sorted()
.toArray();
toArray metoduŞöyle yaparız.
int[] arr = IntStream.range(0, 10).map(i -> i*2).toArray();
Hiç yorum yok:
Yorum Gönder