Java 11 migrate 7 remaining f (#1115)
* Moves facade to Java 11 * Moves factory-kit to Java 11 * Moves factory-method to Java 11 * Moves feature-toggle to Java 11 * Moves fluentinterface to Java 11 * Moves flux to Java 11 * Moves flyweight to Java 11 * Moves front-controller to Java 11 * Uses stream properly * Resolves issues with ci
This commit is contained in:
committed by
Ilkka Seppälä
parent
f835d3d516
commit
670c4e43f3
@@ -28,8 +28,6 @@ import static java.lang.String.valueOf;
|
||||
import com.iluwatar.fluentinterface.fluentiterable.FluentIterable;
|
||||
import com.iluwatar.fluentinterface.fluentiterable.lazy.LazyFluentIterable;
|
||||
import com.iluwatar.fluentinterface.fluentiterable.simple.SimpleFluentIterable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
import java.util.function.Function;
|
||||
@@ -57,19 +55,23 @@ public class App {
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
List<Integer> integerList = new ArrayList<>();
|
||||
integerList.addAll(List.of(1, -61, 14, -22, 18, -87, 6, 64, -82, 26, -98, 97, 45, 23, 2,
|
||||
-68, 45));
|
||||
var integerList = List.of(1, -61, 14, -22, 18, -87, 6, 64, -82, 26, -98, 97, 45, 23, 2, -68);
|
||||
|
||||
prettyPrint("The initial list contains: ", integerList);
|
||||
|
||||
List<Integer> firstFiveNegatives =
|
||||
SimpleFluentIterable.fromCopyOf(integerList).filter(negatives()).first(3).asList();
|
||||
var firstFiveNegatives = SimpleFluentIterable
|
||||
.fromCopyOf(integerList)
|
||||
.filter(negatives())
|
||||
.first(3)
|
||||
.asList();
|
||||
prettyPrint("The first three negative values are: ", firstFiveNegatives);
|
||||
|
||||
|
||||
List<Integer> lastTwoPositives =
|
||||
SimpleFluentIterable.fromCopyOf(integerList).filter(positives()).last(2).asList();
|
||||
var lastTwoPositives = SimpleFluentIterable
|
||||
.fromCopyOf(integerList)
|
||||
.filter(positives())
|
||||
.last(2)
|
||||
.asList();
|
||||
prettyPrint("The last two positive values are: ", lastTwoPositives);
|
||||
|
||||
SimpleFluentIterable
|
||||
@@ -79,15 +81,21 @@ public class App {
|
||||
.ifPresent(evenNumber -> LOGGER.info("The first even number is: {}", evenNumber));
|
||||
|
||||
|
||||
List<String> transformedList =
|
||||
SimpleFluentIterable.fromCopyOf(integerList).filter(negatives()).map(transformToString())
|
||||
.asList();
|
||||
var transformedList = SimpleFluentIterable
|
||||
.fromCopyOf(integerList)
|
||||
.filter(negatives())
|
||||
.map(transformToString())
|
||||
.asList();
|
||||
prettyPrint("A string-mapped list of negative numbers contains: ", transformedList);
|
||||
|
||||
|
||||
List<String> lastTwoOfFirstFourStringMapped =
|
||||
LazyFluentIterable.from(integerList).filter(positives()).first(4).last(2)
|
||||
.map(number -> "String[" + valueOf(number) + "]").asList();
|
||||
var lastTwoOfFirstFourStringMapped = LazyFluentIterable
|
||||
.from(integerList)
|
||||
.filter(positives())
|
||||
.first(4)
|
||||
.last(2)
|
||||
.map(number -> "String[" + valueOf(number) + "]")
|
||||
.asList();
|
||||
prettyPrint("The lazy list contains the last two of the first four positive numbers "
|
||||
+ "mapped to Strings: ", lastTwoOfFirstFourStringMapped);
|
||||
|
||||
@@ -96,12 +104,11 @@ public class App {
|
||||
.filter(negatives())
|
||||
.first(2)
|
||||
.last()
|
||||
.ifPresent(lastOfFirstTwo -> LOGGER
|
||||
.info("The last of the first two negatives is: {}", lastOfFirstTwo));
|
||||
.ifPresent(number -> LOGGER.info("Last amongst first two negatives: {}", number));
|
||||
}
|
||||
|
||||
private static Function<Integer, String> transformToString() {
|
||||
return integer -> "String[" + valueOf(integer) + "]";
|
||||
return integer -> "String[" + integer + "]";
|
||||
}
|
||||
|
||||
private static Predicate<? super Integer> negatives() {
|
||||
@@ -116,14 +123,12 @@ public class App {
|
||||
prettyPrint(", ", prefix, iterable);
|
||||
}
|
||||
|
||||
private static <E> void prettyPrint(String delimiter, String prefix,
|
||||
Iterable<E> iterable) {
|
||||
StringJoiner joiner = new StringJoiner(delimiter, prefix, ".");
|
||||
Iterator<E> iterator = iterable.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
joiner.add(iterator.next().toString());
|
||||
}
|
||||
|
||||
private static <E> void prettyPrint(
|
||||
String delimiter, String prefix,
|
||||
Iterable<E> iterable
|
||||
) {
|
||||
var joiner = new StringJoiner(delimiter, prefix, ".");
|
||||
iterable.forEach(e -> joiner.add(e.toString()));
|
||||
LOGGER.info(joiner.toString());
|
||||
}
|
||||
}
|
||||
|
@@ -24,7 +24,6 @@
|
||||
package com.iluwatar.fluentinterface.fluentiterable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
@@ -102,11 +101,8 @@ public interface FluentIterable<E> extends Iterable<E> {
|
||||
* @return a list with all objects of the given iterator
|
||||
*/
|
||||
static <E> List<E> copyToList(Iterable<E> iterable) {
|
||||
List<E> copy = new ArrayList<>();
|
||||
Iterator<E> iterator = iterable.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
copy.add(iterator.next());
|
||||
}
|
||||
var copy = new ArrayList<E>();
|
||||
iterable.forEach(copy::add);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
|
@@ -65,7 +65,7 @@ public abstract class DecoratingIterator<E> implements Iterator<E> {
|
||||
if (next == null) {
|
||||
return fromIterator.next();
|
||||
} else {
|
||||
final E result = next;
|
||||
final var result = next;
|
||||
next = null;
|
||||
return result;
|
||||
}
|
||||
|
@@ -67,14 +67,14 @@ public class LazyFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public FluentIterable<E> filter(Predicate<? super E> predicate) {
|
||||
return new LazyFluentIterable<E>() {
|
||||
return new LazyFluentIterable<>() {
|
||||
@Override
|
||||
public Iterator<E> iterator() {
|
||||
return new DecoratingIterator<E>(iterable.iterator()) {
|
||||
@Override
|
||||
public E computeNext() {
|
||||
while (fromIterator.hasNext()) {
|
||||
E candidate = fromIterator.next();
|
||||
var candidate = fromIterator.next();
|
||||
if (predicate.test(candidate)) {
|
||||
return candidate;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ public class LazyFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public Optional<E> first() {
|
||||
Iterator<E> resultIterator = first(1).iterator();
|
||||
var resultIterator = first(1).iterator();
|
||||
return resultIterator.hasNext() ? Optional.of(resultIterator.next()) : Optional.empty();
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ public class LazyFluentIterable<E> implements FluentIterable<E> {
|
||||
@Override
|
||||
public E computeNext() {
|
||||
if (currentIndex < count && fromIterator.hasNext()) {
|
||||
E candidate = fromIterator.next();
|
||||
var candidate = fromIterator.next();
|
||||
currentIndex++;
|
||||
return candidate;
|
||||
}
|
||||
@@ -134,7 +134,7 @@ public class LazyFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public Optional<E> last() {
|
||||
Iterator<E> resultIterator = last(1).iterator();
|
||||
var resultIterator = last(1).iterator();
|
||||
return resultIterator.hasNext() ? Optional.of(resultIterator.next()) : Optional.empty();
|
||||
}
|
||||
|
||||
@@ -162,25 +162,20 @@ public class LazyFluentIterable<E> implements FluentIterable<E> {
|
||||
public E computeNext() {
|
||||
initialize();
|
||||
|
||||
E candidate = null;
|
||||
while (currentIndex < stopIndex && fromIterator.hasNext()) {
|
||||
currentIndex++;
|
||||
fromIterator.next();
|
||||
}
|
||||
if (currentIndex >= stopIndex && fromIterator.hasNext()) {
|
||||
candidate = fromIterator.next();
|
||||
return fromIterator.next();
|
||||
}
|
||||
return candidate;
|
||||
return null;
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
if (list == null) {
|
||||
list = new ArrayList<>();
|
||||
Iterator<E> newIterator = iterable.iterator();
|
||||
while (newIterator.hasNext()) {
|
||||
list.add(newIterator.next());
|
||||
}
|
||||
|
||||
iterable.forEach(list::add);
|
||||
totalElementsCount = list.size();
|
||||
stopIndex = totalElementsCount - count;
|
||||
}
|
||||
|
@@ -62,9 +62,9 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final FluentIterable<E> filter(Predicate<? super E> predicate) {
|
||||
Iterator<E> iterator = iterator();
|
||||
var iterator = iterator();
|
||||
while (iterator.hasNext()) {
|
||||
E nextElement = iterator.next();
|
||||
var nextElement = iterator.next();
|
||||
if (!predicate.test(nextElement)) {
|
||||
iterator.remove();
|
||||
}
|
||||
@@ -79,7 +79,7 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final Optional<E> first() {
|
||||
Iterator<E> resultIterator = first(1).iterator();
|
||||
var resultIterator = first(1).iterator();
|
||||
return resultIterator.hasNext() ? Optional.of(resultIterator.next()) : Optional.empty();
|
||||
}
|
||||
|
||||
@@ -92,8 +92,8 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final FluentIterable<E> first(int count) {
|
||||
Iterator<E> iterator = iterator();
|
||||
int currentCount = 0;
|
||||
var iterator = iterator();
|
||||
var currentCount = 0;
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
if (currentCount >= count) {
|
||||
@@ -111,7 +111,7 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final Optional<E> last() {
|
||||
List<E> list = last(1).asList();
|
||||
var list = last(1).asList();
|
||||
if (list.isEmpty()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
@@ -127,9 +127,9 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final FluentIterable<E> last(int count) {
|
||||
int remainingElementsCount = getRemainingElementsCount();
|
||||
Iterator<E> iterator = iterator();
|
||||
int currentIndex = 0;
|
||||
var remainingElementsCount = getRemainingElementsCount();
|
||||
var iterator = iterator();
|
||||
var currentIndex = 0;
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
if (currentIndex < remainingElementsCount - count) {
|
||||
@@ -150,11 +150,8 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
*/
|
||||
@Override
|
||||
public final <T> FluentIterable<T> map(Function<? super E, T> function) {
|
||||
List<T> temporaryList = new ArrayList<>();
|
||||
Iterator<E> iterator = iterator();
|
||||
while (iterator.hasNext()) {
|
||||
temporaryList.add(function.apply(iterator.next()));
|
||||
}
|
||||
var temporaryList = new ArrayList<T>();
|
||||
this.forEach(e -> temporaryList.add(function.apply(e)));
|
||||
return from(temporaryList);
|
||||
}
|
||||
|
||||
@@ -178,7 +175,7 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
}
|
||||
|
||||
public static <E> FluentIterable<E> fromCopyOf(Iterable<E> iterable) {
|
||||
List<E> copy = FluentIterable.copyToList(iterable);
|
||||
var copy = FluentIterable.copyToList(iterable);
|
||||
return new SimpleFluentIterable<>(copy);
|
||||
}
|
||||
|
||||
@@ -204,10 +201,8 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
* @return the count of remaining objects of the current Iterable
|
||||
*/
|
||||
public final int getRemainingElementsCount() {
|
||||
int counter = 0;
|
||||
Iterator<E> iterator = iterator();
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
var counter = 0;
|
||||
for (var ignored : this) {
|
||||
counter++;
|
||||
}
|
||||
return counter;
|
||||
@@ -219,10 +214,8 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
|
||||
* @return a new List with the remaining objects.
|
||||
*/
|
||||
public static <E> List<E> toList(Iterator<E> iterator) {
|
||||
List<E> copy = new ArrayList<>();
|
||||
while (iterator.hasNext()) {
|
||||
copy.add(iterator.next());
|
||||
}
|
||||
var copy = new ArrayList<E>();
|
||||
iterator.forEachRemaining(copy::add);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user