Demo app of using Java 8 features with Retrolambda and Lightweight-Stream-API
Demo app of using Java 8 features with Retrolambda and Lightweight-Stream-API.
Features:
findViewById(R.id.go).setOnClickListener(v -> {
final int index = mActionSpinner.getSelectedItemPosition();
if (index != Spinner.INVALID_POSITION) {
action(actions[index]);
}
});
int cmp = Objects.compare(word, other.word, String::compareToIgnoreCase);
return Stream.of(lines)
.map(str -> str.split("\t"))
.filter(arr -> arr.length == 2)
.map(arr -> new Word(arr[0], arr[1]))
.collect(Collectors.toList());
switch (action) {
case "filter 1":
// Filter one word
stream = stream.filter(p -> p.getWord().split(" ").length == 1);
break;
case "filter 2+":
// Filter two and more words
stream = stream.filter(p -> p.getWord().split(" ").length >= 2);
break;
// ...
}
final List<String> lines = new ArrayList<>();
try (final InputStream is = context.getAssets().open("words.txt");
final InputStreamReader isr = new InputStreamReader(is, "UTF-8");
final BufferedReader reader = new BufferedReader(isr)) {
String line;
while ( (line = reader.readLine()) != null ) {
lines.add(line);
}
}
Objects (from Java 7)
@Override
public boolean equals(Object o) {
// ...
final Word other = (Word) o;
return Objects.equals(translate, other.translate) &&
Objects.equals(word, other.word);
}
@Override
public int hashCode() {
return Objects.hash(word, translate);
}
try { Exceptional } catch (functional try/catch)
return Exceptional.of(() -> {
final InputStream is = context.getAssets().open("words.txt");
// ... operations which throws Exception ...
return lines;
}).ifException(e -> Log.e("Java 8 Example", "Utils.readWords", e))
.getOrElse(new ArrayList<>());
Demo app: Java8StreamExample.apk
Blog (Russian): Java 8 в Android со Stream API и лямбдами
Retrolambda: https://github.com/orfjackal/retrolambda
Lightweight-Stream-API: https://github.com/aNNiMON/Lightweight-Stream-API