Einige Methoden der Klasse ArrayList

Transcription

Einige Methoden der Klasse ArrayList
Einige Methoden der Klasse ArrayList<Typ>
MethoParameter Ergebnis Beschreibung
denname
add
Typ
fügt übergebenes Element
hinten an
add
int, Typ
fügt übergebenes Element an
angegebener Position ein
get
int
Typ
gibt Element an gefragter
Position zurück
remove
int
Typ
entfernt Element an gegebener
Position (ist auch Ergebnis)
set
int, Typ
Typ
ersetzt Objekt an angegebener
Position, gibt altes Objekt zurück
size
int
gibt Anzahl der Elemente
Grundlagen der Programmierung
Stephan Kleuker
267
elementare Datentypen und Klassen
• Bei ArrayList<Typ> muss Typ eine Klasse sein
• Trick: zu jedem elementaren Datentyp gibt es Klasse
• einfache Umwandlung
Grundlagen der Programmierung
Stephan Kleuker
268
Spielerei mit ArrayList
import java.util.ArrayList;
java.util.ArrayList;
public class ListenSpielerei {
public void spielen(){
ArrayList<Integer
ArrayList<Integer>
<Integer> zahlen = new ArrayList<Integer>();
ArrayList<Integer>();
EinUndAusgabe io = new EinUndAusgabe();
EinUndAusgabe();
io.ausgeben("1:
io.ausgeben("1: "+zahlen+"\
"+zahlen+"\n");
zahlen.add(42
zahlen.add(42);
(42);
zahlen.add(41
zahlen.add(41);
(41);
io.ausgeben("2:
io.ausgeben("2: "+zahlen+"\
"+zahlen+"\n");
1: []
zahlen.add(1,23
zahlen.add(1,23);
(1,23);
2: [42, 41]
io.ausgeben("3:
io.ausgeben("3: "+zahlen+"\
"+zahlen+"\n");
3: [42, 23, 41]
4: 41
io.ausgeben("4:
io.ausgeben("4: "+zahlen.get
"+zahlen.get(2)+"
zahlen.get(2)+"\
(2)+"\n");
5: [67, 23, 41]
zahlen.set(0
zahlen.set(0,
(0, 67);
6: [23, 41]
io.ausgeben("5:
io.ausgeben("5: "+zahlen+"\
"+zahlen+"\n");
7: 2
zahlen.remove(0
zahlen.remove(0);
(0);
io.ausgeben("6:
io.ausgeben("6: "+zahlen+"\
"+zahlen+"\n");
io.ausgeben("7:
io.ausgeben("7: "+zahlen.size
"+zahlen.size()+"
zahlen.size()+"\
()+"\n");
Grundlagen
der Programmierung
Stephan Kleuker
}
}
269
ArrayList genauer
ArrayList<Integer
ArrayList<Integer>
<Integer> zahlen = new ArrayList<Integer>();
ArrayList<Integer>();
zahlen.add(42
zahlen.add(42);
(42);
zahlen.add(41
zahlen.add(41);
(41);
Position:
0
1
zahlen.add(1,23);
zahlen.add(1,23);
Inhalt:
42
41
Position:
0
42
1
23
2
41
0
67
1
23
2
41
0
23
1
41
Inhalt:
zahlen.set(0
zahlen.set(0,
(0, 67);
67);
Position:
Inhalt:
zahlen.remove(0
zahlen.remove(0);
(0);
Position:
Inhalt:
Grundlagen der Programmierung
Stephan Kleuker
270
ArrayList mit Referenzen (wie üblich) (1/2)
import java.util.ArrayList;
java.util.ArrayList;
public class DatumsListe{
DatumsListe{
public void analyse(){
analyse(){
EinUndAusgabe io = new EinUndAusgabe();
EinUndAusgabe();
ArrayList<Datum>
ArrayList<Datum> daten = new ArrayList<Datum>();
ArrayList<Datum>();
Datum d1 = new Datum(1,1,2013);
Datum d2 = new Datum(1,1,2014);
daten.add(d1);
daten.add(d1);
daten.add(d2);
daten.add(d2);
daten.add(d1);
daten.add(d1);
Datum tmp = daten.get(0);
daten.get(0);
io.ausgeben(
io.ausgeben(tmp.toString()+"
tmp.toString()+"\
()+"\n");
Datum tmp2 = daten.get(1);
daten.get(1);
io.ausgeben(tmp2+"
io.ausgeben(tmp2+"\
(tmp2+"\n");
io.ausgeben(
io.ausgeben(daten.get(2)+"
daten.get(2)+"\
(2)+"\n");
d1.setTag(9);
tmp.setMonat(9);
tmp.setMonat(9);
daten.get(0).
daten.get(0).setJahr
(0).setJahr(99);
setJahr(99);
io.ausgeben(
io.ausgeben(daten.get(2)+"
daten.get(2)+"\
(2)+"\n");
Stephan Kleuker
Grundlagen
} der Programmierung
}
271
ArrayList mit Referenzen (wie üblich) (2/2)
ArrayList<Datum>
ArrayList<Datum> daten = new ArrayList<Datum>();
ArrayList<Datum>();
Datum d1 = new Datum(1,1,2013);
Datum d2 = new Datum(1,1,2014);
daten.add(d1
daten.add(d1);
(d1);
daten.add(d2
daten.add(d2);
(d2);
daten.add(d1
daten.add(d1);
(d1);
tag
1
d1
monat
1
0
jahr
2013
daten
1
tag
1
monat
1
jahr
2014
2
d2
Grundlagen der Programmierung
Stephan Kleuker
272
Zahlensammlung zurückgeben
• Aufgabe: Alle Zahlen von 0 bis einschließlich einem
Grenzwert zurück geben
• in der Klasse ErsteSchleifen
public ArrayList<Integer>
zahlenBisZurueckgeben(
(
ArrayList<Integer> zahlenBisZurueckgeben
Integer grenze){
ArrayList<Integer
ArrayList<Integer>
<Integer> ergebnis = new ArrayList<Integer>();
ArrayList<Integer>();
Integer zaehler = 0;
while(
while(zaehler <= grenze){
ergebnis.add(
ergebnis.add(zaehler);
zaehler);
zaehler = zaehler + 1;
}
return ergebnis;
ergebnis;
}
Grundlagen der Programmierung
Stephan Kleuker
273
Ausführung (z. B. in Code Pad)
Grundlagen der Programmierung
Stephan Kleuker
274
Polygonzug – durch Linien verbundene Punkte 1/5
public class Punkt {
private int x;
private int y;
public Punkt(int
Punkt(int x, int y){
this.x = x;
this.y = y;
}
public
public
public
public
int getX()
getX() {return this.x;}
this.x;}
void setX(
setX(int x) {this.x = x;}
x;}
int getY()
getY() {return this.y;}
this.y;}
void setY(
setY(int y) {this.y = y;}
public void verschieben(int
verschieben(int dx, int dy){
dy){
this.x = this.x + dx;
this.y = this.y + dy;
dy;
}
// neu!
}
Grundlagen der Programmierung
Stephan Kleuker
275
Polygonzug – durch Linien verbundene Punkte 2/5
import java.util.ArrayList;
java.util.ArrayList;
public class Polygonzug{
private ArrayList<Punkt
ArrayList<Punkt>
punkte;
<Punkt> punkte;
private boolean geschlossen = false;
false;
public Polygonzug(){
this.punkte = new ArrayList<Punkt>();
ArrayList<Punkt>();
}
public void setGeschlossen(
setGeschlossen(boolean neu){
this.geschlossen = neu;
}
public void hinzufuegen(Punkt
hinzufuegen(Punkt p){
this.punkte.add(p);
this.punkte.add(p);
}
Grundlagen der Programmierung
Stephan Kleuker
276
Polygonzug – durch Linien verbundene Punkte 3/5
public void anzeigen(Interaktionsbrett ib){
ib){
int anzahl = this.punkte.size();
this.punkte.size();
int zaehler = 0;
while(
while(zaehler < anzahlanzahl-1){
Punkt start = this.punkte.get(
this.punkte.get(zaehler);
zaehler);
Punkt ende = this.punkte.get(zaehler+1);
this.punkte.get(zaehler+1);
ib.neueLinie(
ib.neueLinie(start.getX(),
start.getX(),start.getY
(),start.getY()
start.getY()
,ende.getX(),
ende.getX(),ende.getY
(),ende.getY());
ende.getY());
zaehler = zaehler + 1;
}
if(geschlossen
if(geschlossen == true && anzahl > 0){
Punkt anfang = this.punkte.get(0);
this.punkte.get(0);
Punkt ende = this.punkte.get(
this.punkte.get(this.punkte.size()
this.punkte.size()()-1);
ib.neueLinie(
ib.neueLinie(anfang.getX(),
anfang.getX(),anfang.getY
(),anfang.getY()
anfang.getY()
,ende.getX(),
ende.getX(),ende.getY
(),ende.getY());
ende.getY());
}
} der Programmierung
Stephan Kleuker
277
Grundlagen
Polygonzug – durch Linien verbundene Punkte 4/5
public void loeschenAnPosition(
loeschenAnPosition(int pos){
pos){
this.punkte.remove(
this.punkte.remove(pos);
pos);
}
public void verschieben(int
verschieben(int deltaX,
deltaX, int deltaY){
deltaY){
int zaehler = 0;
while(
while(zaehler < this.punkte.size()){
this.punkte.size()){
Punkt p = this.punkte.get(
this.punkte.get(zaehler);
zaehler);
p.verschieben(
p.verschieben(deltaX,deltaY);
deltaX,deltaY);
zaehler = zaehler + 1;
}
}
}
Grundlagen der Programmierung
Stephan Kleuker
278
Polygonzug – durch Linien verbundene Punkte 5/5
public class Polygonzugnutzung{
public void beispiel(){
beispiel(){
Interaktionsbrett ib = new Interaktionsbrett();
Polygonzug pg = new Polygonzug();
pg.hinzufuegen(
pg.hinzufuegen(new Punkt(10,10));
pg.hinzufuegen(
pg.hinzufuegen(new Punkt(20,30));
pg.hinzufuegen(
pg.hinzufuegen(new Punkt(30,10));
pg.anzeigen(
pg.anzeigen(ib);
ib);
pg.verschieben(5,40);
pg.verschieben(5,40);
pg.anzeigen(
pg.anzeigen(ib);
ib);
pg.loeschenAnPosition(1);
pg.loeschenAnPosition(1);
pg.anzeigen(
pg.anzeigen(ib);
ib);
}
}
Grundlagen der Programmierung
Stephan Kleuker
279
Erweiterung: Polygonzug erstellen (1/2)
• in Polygonzugnutzung:
public Polygonzug zickzack(int
zickzack(int anzahl){
anzahl){
Polygonzug ergebnis = new Polygonzug();
int zaehler = 0;
boolean zick = true;
true;
while (zaehler < anzahl){
anzahl){
if(zick
if(zick == true){
true){
ergebnis.hinzufuegen(
ergebnis.hinzufuegen(new Punkt(10+zaehler*10,5));
} else {
ergebnis.hinzufuegen(
ergebnis.hinzufuegen(new Punkt(10+zaehler*10,25));
}
zick = !zick;
zaehler = zaehler+1;
}
return ergebnis;
ergebnis;
}
Grundlagen der Programmierung
Stephan Kleuker
280
Erweiterung: Polygonzug erstellen (2/2)
public void beispiel2(){
Interaktionsbrett ib = new Interaktionsbrett();
Polygonzug pg = zickzack(31);
pg.anzeigen(
pg.anzeigen(ib);
ib);
pg.verschieben(0,40);
pg.verschieben(0,40);
pg.setGeschlossen(
pg.setGeschlossen(true);
true);
pg.anzeigen(
pg.anzeigen(ib);
ib);
}
Grundlagen der Programmierung
Stephan Kleuker
281
Erweiterung: Punkte auswählen (1/2)
• in Polygonzug: neuer Polygonzug mit Punkten an 0-ter,
n-ter, 2*n-ter, … Position
public Polygonzug nurNtePunkte(
nurNtePunkte(int n){
Polygonzug ergebnis = new Polygonzug();
int zaehler = 0;
while(
while(zaehler < this.punkte.size()){
this.punkte.size()){
Punkt p = this.punkte.get(
this.punkte.get(zaehler);
zaehler);
ergebnis.hinzufuegen(p);
ergebnis.hinzufuegen(p);
zaehler = zaehler + n;
}
return ergebnis;
ergebnis;
}
Grundlagen der Programmierung
Stephan Kleuker
282
Erweiterung: Punkte auswählen (2/2)
• in Polygonzugnutzung:
public void beispiel3(){
Interaktionsbrett ib = new Interaktionsbrett();
Polygonzug pg = zickzack(31);
pg.anzeigen(
pg.anzeigen(ib);
ib);
Polygonzug pg2 = pg.nurNtePunkte(3);
pg.nurNtePunkte(3);
pg2.verschieben(0,30);
pg2.anzeigen(ib
pg2.anzeigen(ib);
ib);
pg.verschieben(0,60);
pg.verschieben(0,60);
pg.anzeigen(
pg.anzeigen(ib);
ib);
}
Grundlagen der Programmierung
Stephan Kleuker
283

Documents pareils