Lambda und Streams verstehen

AndiE

Top Contributor
Hallo,

ich habe keinen universitären Hintergrund und auch keinen Prof zum fragen. Nachdem ein TO hier verschwunden ist, interessiert mich doch die Antwort. Es ging darum, einen Index mit Keywords in Context zu erstellen. Um das zu vereinfachen habe ich drei Zeilen erstellt, bei denen das "a" jeweils ein Füllwort darstellt, das rausgefiltert werden soll. Momentan stecke ich aber einen Schritt vorher fest. Wie kann ich die Einträge der Liste "res" sortieren, und wie kann ich dafür sorgen, dass Zeilennummern mitgenommen werden. Das habe ich jetzt noch nicht angedacht. Aber würde man die Zeilennummern den String mit aufnehmen oder seperat führen. Dann wäre es aber kein Stream of Strings mehr.Mmh?

Hier der Code:
Java:
package lambda;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;


public class Baguette {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
            List<String> al=new ArrayList<String>();
            al.add("A a D");      
            al.add("B a E");
            al.add("C a F");
            List<String> res= new ArrayList<>();
            for (String s : al) {
                String[] sl=s.split("\\s");
                //Liste aus Einzelteilen anlegen
                List<String> za=new ArrayList<>();
                for(String b : sl){
                    za.add(b);
                }
                String rs;
                for (int i=0;i<sl.length;i++) {
                    rs=rotateListByN(i,za);
                res.add(rs);
                }
            }  
            Stream<String> st=res.stream();
            long anz= st.count();
            for (String a : res ) {
                System.out.println(a);
            }
            System.out.println(anz);      
           
    }

    static String rotateListByN(int n, List<String> input) {
        List<String> a = new ArrayList<>();
        a.addAll(input);
        Collections.rotate(a, n);
        return String.join(" ", a);
        }
}
 

httpdigest

Top Contributor
Mir ist nicht 100%ig klar, was genau deine Frage ist, bzw. was du wissen willst.
Wie kann ich die Einträge der Liste "res" sortieren
Collections.sort() ?
wie kann ich dafür sorgen, dass Zeilennummern mitgenommen werden
Indem du eine Datenstruktur/Klasse benutzt, in der du die Zeile und die Zeilennummer ablegst.

Jetzt heißt der Titel des Threads auch noch `Lambda und Streams verstehen`. Das heißt, du willst das ganze noch mit Streams und funktional mit Lambdas umsetzen?

Kannst du dein konkretes Problem auf eine einzige abgrenzbare Frage eingrenzen?

EDIT: Wenn du das, was du schon hast, noch zusammen mit Zeilennummern haben willst und das ganze noch mit Streams und Lambdas/funktional, dann bitte (unter Verwendung von jOOL zum "zip"pen zweier Streams und für Tuple-Datentypen):
Java:
import static java.util.stream.Collectors.joining;
import static java.util.stream.IntStream.iterate;
import static org.jooq.lambda.Seq.*;
import static org.jooq.lambda.tuple.Tuple.*;
import java.util.stream.Stream;
import org.jooq.lambda.tuple.Tuple2;
public class Baguette {
  private static Stream<Integer> from(int start) {
    return iterate(start, i -> i + 1).boxed();
  }
  private static Stream<Tuple2<Integer, String>> zipWithIndex(Stream<String> lines) {
    return zip(from(1), lines);
  }
  private static String rotate(int n, String[] input) {
    return range(0, input.length)
          .map(i -> input[(input.length + i - n) % input.length])
          .collect(joining(" "));
  }
  private static Stream<Tuple2<Integer, String[]>> strings(String s) {
    String[] sp = s.split("\\s+");
    return zip(from(0), generate(sp)).limit(sp.length);
  }
  public static void main(String[] args) {
    Stream<Tuple2<Integer, String>> seq = 
        zipWithIndex(of(
            "A a D", 
            "B a E", 
            "C a F"
    ));
    System.out.println(seq
        .flatMap(t -> 
            strings(t.v2)
           .map(j -> tuple(
               t.v1, rotate(
                   j.v1, j.v2))))
        .peek(System.out::println).count());
  }
}
 

mihe7

Top Contributor
@ mihe7: Genau das meine ich.


Java:
import java.nio.file.*;
import java.util.*;
import java.util.stream.*;

public class Test {
    public static void main(String[] args) throws Exception {
        Set<String> filters = Files.lines(Paths.get(args[1])).collect(Collectors.toSet());
        Files.lines(Paths.get(args[0]))
            .flatMap(row -> rotated(row, filters))
            .distinct()
            .sorted()
            .forEach(System.out::println);
    }

    static Stream<String> rotated(String row, Set<String> filters) {
        List<String> words = Stream.of(row.split("\\s+")).collect(Collectors.toList());

        return IntStream.range(0, words.size())
            .filter(n -> !filters.contains(words.get(n)))
            .mapToObj(n -> rotateListByN(-n, words));
    }

    static String rotateListByN(int n, List<String> input) {
        List<String> a = new ArrayList<>();
        a.addAll(input);
        Collections.rotate(a, n);
        return String.join(" ", a);
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 Lambda - Block vs "Anweisungsliste" Allgemeine Java-Themen 8
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
A Lambda-Ausdrücke Allgemeine Java-Themen 5
O Best Practice Lambda Expressions Allgemeine Java-Themen 3
Rudolf Compiler-Fehler Lambda als Argument kompiliert nicht Allgemeine Java-Themen 2
E Lambda filter performance Allgemeine Java-Themen 2
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
M Lambda "invalid method reference no suitable method found" Allgemeine Java-Themen 2
H Consumer (Java8 Lambda) an Timer übergeben Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
Monokuma Lesbarkeit von Streams Allgemeine Java-Themen 6
Monokuma Foreach Schleifen in Streams umändern Allgemeine Java-Themen 23
J Streams Allgemeine Java-Themen 6
LimDul Streams und Exception Allgemeine Java-Themen 8
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
K Lesbarkeit von Streams Allgemeine Java-Themen 5
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
mihe7 Lesbarkeit von Streams Allgemeine Java-Themen 5
N Streams wann .filtern? Allgemeine Java-Themen 2
J IO Streams Allgemeine Java-Themen 13
M Wie funktionieren parallele Java Streams? Allgemeine Java-Themen 1
R Collections BiPredicate in Java 8 Streams Allgemeine Java-Themen 7
F Umgehen mit übergebenen Streams Allgemeine Java-Themen 3
hdi Überwachen des err-Streams? Allgemeine Java-Themen 8
N read streams umleiten Allgemeine Java-Themen 2
DEvent GZIP Streams und gzip Allgemeine Java-Themen 2
S Streams zusammenfügen Allgemeine Java-Themen 4
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
C in Streams Allgemeine Java-Themen 4
M Sind Streams asynchron? Allgemeine Java-Themen 2
Saxony DOS Konsole und deren Streams Allgemeine Java-Themen 5
B Probleme mit Streams Allgemeine Java-Themen 5
T Zwei Streams verbinden Allgemeine Java-Themen 3
L Die Wahl des richtigen Streams? Allgemeine Java-Themen 3
G Video Streams mit Servlets Allgemeine Java-Themen 3
P Streams per Mail mit JavaMailAPI versenden Allgemeine Java-Themen 3
A Streams: merkwürdiges Verhalten Allgemeine Java-Themen 7
A Streams - merkwürdiges Verhalten Allgemeine Java-Themen 2
thE_29 Problem mit Streams Allgemeine Java-Themen 6
S Processing Java Code verstehen Allgemeine Java-Themen 4
M einfach verkettete Liste verstehen Allgemeine Java-Themen 23
Devin Mergesort verstehen Allgemeine Java-Themen 3
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
N Binärbaum verstehen Allgemeine Java-Themen 6
P Manifest verstehen Allgemeine Java-Themen 11
T Java JVM crash verstehen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben