();
3 Indstil en simpel while-løkke . Denne løkke vil forløbe , så længe begge lister har mindst ét element i dem, og det vil flytte den mindste af de øverste elementer til den fusionerede liste: .
//Mens begge lister er ikke tomme
mens ( ! list1.isEmpty () && ! list2.isEmpty ( )) {
if ( list1.peek () < = list2.peek ( )) {
fusioneret . add ( list1.pop ());
} else {
merged.add ( list2.pop ());
}
} nær
" Peek " kommando ser på elementet på forsiden af listen , mens " Pop" både ser på elementet og fjerner det . Når sammenligningen er foretaget, du kun ønsker at kigge øverst på listen for at se, der er mindre. Når det drejer sig tid til at slå listerne , du ønsker at tage væk øverste værdi og sætte det på de nye lister .
4
afslutte jobbet. Så snart enten er tom , er der ingen grund til at fortsætte med at foretage sammenligninger. Derfor er de gamle loop slutter , og en anden loop skabt for at udfylde resten af det fusionerede liste med de resterende data fra den seneste liste : Hej
//Mens den første liste er ikke tom
mens {
merged.add ( list1.pop ());
} ( list1.isEmpty () !)
//mens den anden liste er ikke tom.
mens {
merged.add ( list2.pop ());
} ( list2.isEmpty () !)
5
udskrive resultater, så du kan inspicere det fusionerede listen og sikre, at det fungerede korrekt : Hej
int x = 1;
for (Dobbeltværelse y : fusioneret ) {
System . out.println (x + "" + y ),
x + +;
}