Die Anderen Sets, Maps, Vecs, Lists werden bei der Ausgabe richtig sortiert ausgegeben (meiner Meinung nach) !
Nur Nummer 2: HashSet mit Iterator werden falsch sortiert (meiner Meinung nach):
Ausgabe ist:
Name12 Vorname12 12
Name13 Vorname13 13
Name11 Vorname11 11
Sollte aber sein:
Name11 Vorname11 11
Name12 Vorname12 12
Name13 Vorname13 13
Was läuft hier falsch ?
Nur Nummer 2: HashSet mit Iterator werden falsch sortiert (meiner Meinung nach):
Java:
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.Vector;
import java.util.stream.Stream;
public class TestLauf
{
public static void main(String... args)
{
// Vector -> Möglichkeit Nummer 1:
Student st1 = new Student("Name1", "Vorname1", 1234);
Student st2 = new Student("Name2", "Vorname2", 1235);
Student st3 = new Student("Name3", "Vorname3", 1236);
Vector<Student> vec = new Vector<Student>();
vec.add(st1);
vec.add(st2);
vec.add(st3);
for(int i = 0; i < vec.size(); i++)
vec.elementAt(i).setDatenAusgabe();
System.out.println();
// -------------------------------------------------------------------------------
// HashSet -> Möglichkeit Nummer 2:
Student st11 = new Student("Name11", "Vorname11", 11);
Student st12 = new Student("Name12", "Vorname12", 12);
Student st13 = new Student("Name13", "Vorname13", 13);
HashSet<Student> set1 = new HashSet<Student>();
set1.add(st11);
set1.add(st12);
set1.add(st13);
Iterator<Student> it = set1.iterator();
while (it.hasNext())
{
Student set1Text = it.next();
System.out.println(set1Text.name + " " + set1Text.vorname + " " + set1Text.matrikelnummer);
}
System.out.println();
// -------------------------------------------------------------------------------
// TreeSet -> Möglichlkeit Nummer 3:
Comparator<User> c = (u1, u2) -> u1.getLastName().compareTo(u2.getLastName());
TreeSet<User> users = new TreeSet<>(c);
users.addAll(Arrays.asList(new User("Vorname1", "Nachname1", 30),
new User("Vorname2", "Nachname2", 40),
new User("Vorname3", "Nachname3", 50)));
System.out.println(users);
System.out.println();
// --------------------------------------------------------------------------------
// HashMap -> Möglichkeit Nummer 4:
Student st100 = new Student("Topf", "Hans", 100);
Student st200 = new Student("Teller", "Hannes", 200);
Student st300 = new Student("Hauser", "Maxi", 300);
HashMap<Integer, Student> map = new HashMap<Integer, Student>();
map.put(st100.getMatrikelnummer(), st100);
map.put(st200.getMatrikelnummer(), st200);
map.put(st300.getMatrikelnummer(), st300);
for (Map.Entry<Integer, Student> study : map.entrySet())
{
System.out.println(study.getKey() + " -> " + study.getValue().name + "-" + study.getValue().vorname);
}
System.out.println();
// ---------------------------------------------------------------------------------
// Seit Java_16 -> List.of -> Möglichkeit Nummer 5:
var<Person> persons = List.of(new Person("Derler", "Hans", 44, "Hamburg"),
new Person("Derler", "Maria", 41, "Hamburg"),
new Person("Sepati", "Martin", 48, "London"));
// Filtern nach Familienname und Stadt:
Stream<Person> allJohninWien = persons.stream().filter(person -> person.famname().equals("Derler")).filter(ort -> ort.livesIn("Hamburg"));
allJohninWien.forEach(System.out::println);
}
}
Ausgabe ist:
Name12 Vorname12 12
Name13 Vorname13 13
Name11 Vorname11 11
Sollte aber sein:
Name11 Vorname11 11
Name12 Vorname12 12
Name13 Vorname13 13
Was läuft hier falsch ?