2. Fragen für Fortgeschrittene

2. Fragen für Fortgeschrittene

Fragen zu Java, Algorithmen und Datenstrukturen für Fortgeschrittene.

Die Fragen in dieser Kategorie sind auf das Skript: "Fortgeschrittene Programmiertechniken" für das zweite Semester abgestimmt.

javafrage Sun, 01/29/2012 - 10:52

Fragen zur graphischen Programmierung (Swing)

Fragen zur graphischen Programmierung (Swing) javafrage Sun, 03/19/2017 - 17:50

1 Swing Layoutmanager

1 Swing Layoutmanager

Bestimmen Sie den oder die Layoutmanager für Swingbenutzeroberflächen abhängig von der Position und der Größe der gezeigten Komponenten. Gehen Sie davon aus, dass das Fenster mit dem JPanel in der Wunschgröße gezeigt wird.

Beispiel:

a.)LayoutManager : FlowLayoutManager

Hinweis: Sie benötigen eventuell Hilfspanels mit eigenem Layoutmanager

Beispiele für Komponentenlayouts

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 7 Minuten
javafrage Fri, 02/03/2012 - 11:06

Anonymous (not verified)

Sun, 04/28/2013 - 11:02

Kann es sein, dass bei der Frage die genaue Fragestellung fehlt?

Danke. Wurde korrigiert. Muss ein klassischer Copy-and-paste Fehler gewesen sein...

2 Relatives Layoutmanagement versus absolutes Layoutmanagement

2 Relatives Layoutmanagement versus absolutes Layoutmanagement

Warum ist in den meisten Fällen die Verwendung von Layoutmanagern bei der Entwicklung von graphischen Benutzeroberflächen sinnvoller als ein Pixel-genaues Layout aller Komponenten?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 1: Swing LayoutManager

a.) LayoutManager: Flow oder Box

b.) LayoutManager: Box; Alle Elemente haben gleiche Höhe, C hat eigene Breite die Boxbreite bestimmt.

c.) LayoutManager: Borderlayout ohne Centerelement

d.) Layoutmanager: Gridlayoutmanager

e.) LayoutManager äussereres JPanel: Borderlayout mit A und B in eigenem Layoutmanager im Norden

  • Hilfspanel um A+B: Layoutmanager des Hilfspanel: Flow, Grid, Border oder Box
javafrage Mon, 02/06/2012 - 16:25

3 Welcher Layoutmanager wird hier benutzt?

3 Welcher Layoutmanager wird hier benutzt?

Das Applet weiter unten kann 6 JFrames starten. Jedes JFrame benutzt ein JPanel. Welcher Layoutmanager wird im jeweiligen Frame verwendet?

Manche Layoutmanager benötigen Direktiven bei der Erzeugung des Layoutmanager. Welche Direktiven wurden hier verwendet?

Manche Komponenten benötigen Direktiven für den Layoutmanager beim Hinzufügen in das JPanel?

Laden Sie die Datei Layout.jar auf Ihren Rechner. Starten Sie sie mit dem Befehl:

java -jar Layout.jar

Ein Doppelklick auf der heruntergeladenen Datei reicht vielleicht auch.

Die 6 JFrames verwenden jeweils nur einen Layoutmanager.

Hinweis: Links von diesem Text sollte automatisch ein Applet mit 6 Knöpfen gestartet werden. Beim Drücken eines Knopf wird jeweils ein Fenster mit einem JFrame erzeugt. Es taucht am linken oberen Bildschirmrand auf.

Tipp: Vergrößern und verkleinern Sie die Fenster. Man kann bei manchen Fenstern erst erkennen welcher Layoutmanager verwendet wird wenn die einzelnen Komponenten nicht ihre Wunschgröße erhalten

Antwort zu Frage 2: Relatives Layoutmanagement versus absolutes Layoutmanagement

Graphische Oberflächen müssen auf unterschiedlich großen Bildschirmen angezeigt werden können.

Komponenten haben eventuell auf Grund des Betriebssystems unterschiedliche Größen.

GUIs werden vom Benutzer eventuell in der Form geändert.

Bei all diesen Gegebenheiten ist ein automatisches Anlegen eines neuen Layout von Vorteil.

javafrage Sat, 02/25/2012 - 11:59

Anonymous (not verified)

Mon, 06/20/2016 - 10:27

Kann es sein, dass hier das Applet fehlt?

Anonymous (not verified)

Tue, 06/26/2018 - 17:45

Hier fehlt wohl das Applet.
Da Applets von den meisten Browsern nicht mehr unterstützt werden, sollte die Frage wohl rausgenommen oder umformuliert werden.

LG:)

Stefan Schneider

Tue, 06/26/2018 - 18:00

In reply to by Anonymous (not verified)

Die Zeiten der Applets sind vorbei.
Ich habe den Text angepasst. Man muss sich die jar Datei individuell herunterladen.

4 Swing: Layoutmanager für drei Komponenten

4 Swing: Layoutmanager für drei Komponenten

Welche Layoutmanager können auf Wunsch drei Komponenten horizontal oder auch vertikal anzeigen?

Gehen Sie davon aus, dass der LayoutManager die Komponenten mindestens in ihrer Wunschgröße darstellen kann.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 3: Layoutmanager

  • Layoutmanager 1: Flowlayout
  • Layoutmanager 2: Boxlayout, vertikal (Parameter BoxLayout.Y_AXIS)
  • Layoutmanager 3: Gridlayout(2,3), 2 Zeilen, 3 Spalten
  • Layoutmanager 4: Borderlayout
    • JButton "A": Borderlayout.NORTH
    • JButton "B": Borderlayout.WEST
    • JButton "CCCCCCCC": BorderLayout.CENTER
    • JTextArea: Borderlayout.EAST
    • JButton "D": Borderlayout.SOUTH
  • Layoutmanager 5: Boxlayout, horizontal (Parameter BoxLayout.X_AXIS)
  • Layoutmanager 6:
    • JButton "A": Borderlayout.NORTH
    • JButton "CCCCCCCC": BorderLayout.CENTER
    • JTextArea: Borderlayout.EAST
    • JButton "D": Borderlayout.SOUTH

Der Quellcode des Applets

package Kurs2.Swing;
 
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
 
public class LayoutTest extends JApplet implements ActionListener {
    JButton[] b;
    static final int BUTTONS = 6;
 
    public LayoutTest() {
        b = new JButton[BUTTONS+1];
        JPanel jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.Y_AXIS));
        for (int i=1; i<= BUTTONS; i++) {
            b[i] = new JButton("Layoutmanager " + i );
            jp.add(b[i]);
            b[i].addActionListener(this);
        }
        Container myPane = getContentPane();
        myPane.add(jp);
    }
    public static void main(String[] args) {
        layout1();
        layout2();
        layout3();
        layout4();
        layout5();
        layout6();
    }
 
    public static void layout1() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 1");
        jp = new JPanel();
        jp.setLayout(new FlowLayout());
 
        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("B"),BorderLayout.WEST);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.SOUTH);
        jp.add(new JButton("D"));
 
        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
 
    public static void layout2() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 2");
        jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.Y_AXIS));

        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"));

      f.add(jp);
        f.pack();
        f.setVisible(true);
    }

    public static void layout3() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 3");
        jp = new JPanel();
        jp.setLayout( new GridLayout(2,3));

        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"),BorderLayout.CENTER);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
    public static void layout4() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 4");
 
        jp = new JPanel();
        jp.setLayout( new BorderLayout());

        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("B"),BorderLayout.WEST);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.EAST);
        jp.add(new JButton("D"),BorderLayout.SOUTH);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }

    public static void layout5() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 5");
        jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.X_AXIS));
 
        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"));
 
        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
public static void layout6() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 6");

        jp = new JPanel();
        jp.setLayout( new BorderLayout());

        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.EAST);
        jp.add(new JButton("D"),BorderLayout.SOUTH);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == b[1]) layout1();
        if (source == b[2]) layout2();
        if (source == b[3]) layout3();
        if (source == b[4]) layout4();
        if (source == b[5]) layout5();
        if (source == b[6]) layout6();
    }
}

 

javafrage Fri, 01/04/2013 - 12:30

5 Flowlayout-Manager versus Boxlayout-Manager

5 Flowlayout-Manager versus Boxlayout-Manager

Der Flowlayout-Manager und der Boxlayout-Manager sind sich ähnlich. Der Flowlayout-Manager ist nicht immer eine gute Wahl.
Nennen Sie 3 Fälle in denen man den Boxlayout-Manager verwenden sollte.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 4: Swing, Layoutmanager für drei Komponenten

  • Boxlayout-Manager
  • Gridlayout-Manager
  • Borderlayout-Manager

 

javafrage Fri, 01/04/2013 - 12:37

Anonymous (not verified)

Thu, 06/06/2019 - 20:42

In Frage 4 auf der vorherigen Seite heißt es: "Gehen Sie davon aus, dass der LayoutManager die Komponenten in ihrer Wunschgröße darstellen kann."
Im Skript steht, dass der Gridlayout-Manager eine einheitliche Größe für alle Zellen hat. Wieso ist er als Antwort hier trotzdem richtig?

6 Swing, vertikale Anordnung von Komponenten

6 Swing, vertikale Anordnung von Komponenten

Sie sollen 5 unterschiedliche Komponenten vertikal anordnen. Alle Komponenten sollen die gleiche Fläche einnehmen. Welchen Layoutmanager wählen Sie?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1 Minute

Antwort zu Frage 5: Swing, Flowlayout-Manager versus Boxlayout-Manager

  1. Komponenten behalten minimal Wunschgröße und nutzen weitere Fläche wenn möglich
  2. Es gibt nie einen Umbruch in eine zweite Zeile
  3. Man kann ein vertikales Layout erzwingen

 Tipp: Mit Lösungsapplet zu Frage 2.25 spielen.

javafrage Fri, 01/04/2013 - 12:45

7 Swing, Implementieren einer Adapterklasse

7 Swing, Implementieren einer Adapterklasse

In der folgenden Klasse wird für das JLabel text1 eine innere Klasse MyMouseListener implementiert die auf 2 Ereignisse mit  Konsolenausgaben reagiert:

  • Maus kommt über Komponente
  • Maus verlässt die Komponente

Hierzu wird die Schnittstelle MouseListener implementiert.
Aufgabe:

  • Implementieren Sie eine gleichwertige innere Klasse MyMouseAdapter für das JLabel text2.
  • Spezialisieren Sie hierzu die abstrakte Klasse Swingklasse MouseAdapter die MouseListener implemeniert
  • Die neue Klasse soll die gleichen Ereignisse gleich behandeln(Kopieren Sie den Methodenrumpf)
package Kurs2.K2012;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;

public class ListenerToAdapter {

   public class MyMouseListener implements MouseListener {
      public void mouseClicked(MouseEvent e) {}
      public void mouseExited(MouseEvent e)
         { System.out.println("raus");}
      public void mouseEntered(MouseEvent e)
         { System.out.println("rein");}
      public void mousePressed(MouseEvent e) {}
      public void mouseReleased(MouseEvent e){}
      }

   public class MyMouseAdapter // Ab hier implementieren...
 
 
 
 
     // Ende der Implementierung
   } //Ende Klasse MyMouseAdapter

   public ListenerToAdapter() {
JLabel text1 = new JLabel("Label 2");
text1.addMouseListener(new MyMouseListener());
JLabel text2 = new JLabel("Label 2");
text2.addMouseListener(new MyMouseAdapter());
}
}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 6: Swing, vertikale Anordnung von Komponenten

  • Gridlayout-Manager

 

javafrage Fri, 01/04/2013 - 15:16

8 Adapterklassen versus Schnittstellen

8 Adapterklassen versus Schnittstellen
  1. Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
  2. Wann haben die Adapterklassen im Vergleich zu den Schnittstellen keine Vorteile für den Entwickler?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 7: Swing, Implementieren einer Adapterklasse

In der folgenden Klasse wird für das JLabel text1 eine innere Klasse MyMouseListener implementiert die auf 2 Ereignisse mit  Konsolenausgaben reagiert:

  • Maus kommt über Komponente
  • Maus verlässt die Komponente

Hierzu wird die Schnittstelle MouseListener implementiert.
Aufgabe:

  • Implementieren Sie eine gleichwertige innere Klasse MyMouseAdapter für das JLabel text2.
  • Spezialisieren Sie hierzu die abstrakte Klasse Swingklasse MouseAdapter die MouseListener implemeniert
  • Die neue Klasse soll die gleichen Ereignisse gleich behandeln(Kopieren Sie den Methodenrumpf)
package Kurs2.K2012;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;

public class ListenerToAdapter {

   public class MyMouseListener implements MouseListener {
      public void mouseClicked(MouseEvent e) {}
      public void mouseExited(MouseEvent e)
         { System.out.println("raus");}
      public void mouseEntered(MouseEvent e)
         { System.out.println("rein");}
      public void mousePressed(MouseEvent e) {}
      public void mouseReleased(MouseEvent e){}
      }

   public class MyMouseAdapter extends MouseAdapter // Ab hier implementieren...
      public void mouseExited(MouseEvent e) 
{ System.out.println("raus");}
public void mouseEntered(MouseEvent e)
{ System.out.println("rein");}
// Ende der Implementierung } //Ende Klasse MyMouseAdapter public ListenerToAdapter() {
JLabel text1 = new JLabel("Label 2");
text1.addMouseListener(new MyMouseListener());
JLabel text2 = new JLabel("Label 2");
text2.addMouseListener(new MyMouseAdapter());
}
}

 

javafrage Sat, 01/05/2013 - 13:44

Anonymous (not verified)

Sun, 04/28/2013 - 11:06

Muss die Klasse MyMouseAdapter nicht von MouseAdapter erben, um die genutzten Methoden "mouseExited" und "mouseEntered" überschreiben zu können? Also: public class MyMouseAdapter extends MouseAdapter { ... } .

9 Innere und anonyme Klassen

9 Innere und anonyme Klassen

Welchen Vorteil haben innere und anonyme Klassen in der Swing GUI Programmierung?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Swing, Implementieren einer Adapterklasse

  1. Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
    • Man muss nur die gewünschten Methoden durch überschreiben implementieren.
      Nicht benötigte Methoden können als leere Methoden geerbt werden. Bei einer Schnittstelle muss man alle Methoden implementieren. Auch die nicht benötigten.
  2. Wann haben die Adapterklassen im Vergleich zu den Schnittstellen keine Vorteile für den Entwickler?
    • Wenn man alle Methoden der Klasse sowieso implementieren muss. Wenn man von einer anderen Klasse erben möchte
       

 

javafrage Sat, 01/05/2013 - 13:58

10 Implementieren einer Listenerklasse

10 Implementieren einer Listenerklasse

Implementieren Sie eine Listenerklasse zum Behandeln von Mausklicks.
Benutzen Klassen aus dem Java API um diese Aufgabe zu lösen.

Siehe Diagramm:

 Listener-Hierarchie

Implementieren Sie die Klasse MeinMausListener. Die Klasse soll auf die Ereignisse MousePressed und MouseReleased reagieren.
Welche Klasse bzw. Schnittstelle wählen Sie um den Implementierungsaufwand minimal zu halten?
Wählen Sie den besten Methodenkopf (ankreuzen):.

  1. public class MeinMausListener extends MouseMotionListener
  2. public class MeinMausListener implements MouseMotionListener 
  3. public class MeinMausListener extends MouseListener 
  4. public class MeinMausListener implements MouseListener 
  5. public class MeinMausListener extends MouseAdapter 
  6. public class MeinMausListener implements MouseAdapter 
  7. public class MeinMausListener extends EventListener 
  8. public class MeinMausListener implements EventListener 

Welche andere Option ist die nächstbeste, aber suboptimal?

Warum ist diese Option suboptimal?

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2+2 Minuten

 

Antwort zu Frage 9: Innere und anonyme Klassen

Man kann sie direkt in der Klasse implementieren die sie exklusiv benötigen.
Dadurch benötigt man weniger Klassen.
Man belegt den Namensraum des Pakets nicht unnötig mit Klassennamen.
Man kann auf die Variablen und Methoden der umgebenden Klasse/Objekt zugreifen.

 

javafrage Fri, 01/25/2013 - 09:50

Sie haben haben sich das sehr genaue angeschaut. Gute Sache!

Durch das Werfen (Kommando throw) der IllegalArgumentException wird die Methode divide() abgebrochen da diese Ausnahme nicht in der Methode gefangen wird. "Divide after" wird nicht mehr erreicht.
Das Hinterhältige diese Aufgabe besteht darin, dass die Sonderregel "finally Blöcke werden immer ausgeführt" zum tragen kommt.
"divide: geschafft" wird also noch ausgeführt obwohl das Laufzeitsystem auf dem schnellsten Weg die Methode divide() verlassen möchte.
Ihre Frage hat eine gute Detaildiskussion angeregt. Danke!

11 Benutzung innerer Klassen

11 Benutzung innerer Klassen

Warum ist die Benutzung einer inneren Klasse nützlich?
Nennen Sie mindestens zwei Gründe.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

 

Antwort zu Frage 10: Implementieren einer Listenerklasse

 Listener-Hierarchie

Möglichkeiten

  1. public class MeinMausListener extends MouseMotionListener
  2. public class MeinMausListener implements MouseMotionListener 
  3. public class MeinMausListener extends MouseListener 
  4. public class MeinMausListener implements MouseListener 
  5. public class MeinMausListener extends MouseAdapter 
  6. public class MeinMausListener implements MouseAdapter 
  7. public class MeinMausListener extends EventListener 
  8. public class MeinMausListener implements EventListener 

Lösung 5 hat den niedrigsten Implementierungsaufwand

Lösung 4 ist korrekt aber suboptimal. Man muss alle Methoden implementieren.

javafrage Mon, 03/17/2014 - 08:40

12 Verwendung anonymer innerer Klassen

12 Verwendung anonymer innerer Klassen

In welchem Fall bietet sich die Verwendung einer anonymen, inneren Klasse an?
Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 11: Benutzung innerer Klassen

  1. Der Klassennamensraum wird nicht unnötig benutzt
  2. Man kann auf die lokalen Attribute des Objekts der äusseren Klasse zugreifen

 

javafrage Mon, 03/17/2014 - 08:47

13 Swing: Komponenten und Container

13 Swing: Komponenten und Container
  • Was sind Komponenten in Swing?
    • Geben Sie eine kurze Erklärung
  • Was sind Container in Swing?
    • Geben Sie eine kurze Erklärung und erläutern Sie die Beziehung zwischen Containern und Komponenten.
  • Nennen Sie zwei Klassen die Container sind!

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2+2 Minuten

 Antwort zu Frage 12: Verwendung anonymer innerer Klassen

Man kann sehr effizient Klassen implementieren, die nur eine Methode besitzen und nur an genau einer Stelle benötigt werden um eine Schnittstelle oder eine abstrakte Klasse zu implementieren.

javafrage Sun, 03/01/2015 - 10:45

14 Layoutmanager, Komponenten, Container

14 Layoutmanager, Komponenten, Container

In welcher Beziehung stehen Layoutmanager zu Komponenten und Containern?

Nennen Sie drei Layoutmanager mit den denen Sie die horizontale Anordnung dreier Komponenten erzwingen können.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+3 Minuten

Antwort zu Frage 13: Swing; Komponenten und Container

  • Was sind Komponenten in Swing?
    • Komponenten repräsentieren Teile einer graphischen Benutzerschnittstelle mit denen der Benutzer interagieren kann.
  • Was sind „Container in Swing?
    • Container sind Komponenten die wieder andere Komponenten enthalten können.
  • Nennen Sie zwei Klassen die Container sind
    • JPanel
    • JFrame

 

 

javafrage Sun, 03/01/2015 - 10:55

15 Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

15 Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

Nennen Sie drei Vorteile die eine innere Klasse bei der Swing-Ereignisbehandlung im Gegensatz zu einer normalen Klasse für den Entwickler hat.

Erläutern Sie die Vorteile mit jeweils einem Satz.

Wann ist es vorteilhaft eine anonyme innere Klasse in Gegensatz zu einer inneren Klasse mit Namen zu verwenden? Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3+2 Minuten

 

Antwort zu Frage 14: Layoutmanager, Komponenten, Container

In welcher Beziehung stehen Layoutmanager zu Komponenten und Containern?

  • Layoutmanager erlauben die Anordnung von Komponenten in Containern zu konfigurieren.

Nennen Sie drei Layoutmanager mit den denen Sie die horizontale Anordnung dreier Komponenten erzwingen können.

  • BoxLayoutmanager
  • GridLayoutmanager
  • BorderlayoutManager

 

javafrage Sat, 03/21/2015 - 12:57

Anonymous (not verified)

Thu, 05/16/2019 - 08:23

Hallo,

in der Frage 15, 3 Satz sollte wohl anstelle von "Gegen" "Geben" stehen :)

16 Beurteilung von grafischen "Heavyweight" GUI Implementierungen

16 Beurteilung von grafischen "Heavyweight" GUI Implementierungen

Nennen Sie jeweils zwei Vorteile und zwei Nachteile einer grafischen „Heavyweight“ Implementierung wie AWT im Vergleich zu Swing.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 15: Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

  1. Die Klassen liegen automatisch im gleichen Paket
  2. Es ist ein Zugriff auf die privaten Attribute der äusseren Klasse möglich
  3. Man belegt keine unnötigen Namen im Namensraum des Pakets der äusseren Klasse

Man nutzt eine anonyme innere Klasse wenn man genau eine Stelle im Code hat an der sie implementiert werden muss.

 

javafrage Sat, 01/24/2015 - 11:13

Anonymous (not verified)

Thu, 05/16/2019 - 08:25

Hallo,

In der Antwort zur Frage 15, sollte wohl aus dem englischen "when" ein "wenn" werden #denglisch :)

17 Vor- und Nachteile von grafischen Lightweight-Implementierungen

17 Vor- und Nachteile von grafischen Lightweight-Implementierungen

Nennen Sie jeweils zwei Vorteile und zwei Nachteile einer grafischen „Lightweight“ Implementierung wie Swing im Vergleich zu AWT.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 16: Beurteilung von grafischen "Heavyweight" GUI Implementierungen

Vorteile

  1. Sie nutzen optimal die Betriebssystemresourcen
  2. Das Betriebssystem kennt alle Resourcen und kann sie optimal koordinieren. Bsp. Ein Menü welches andere Fenster verdeckt kann vollständig angezeigt werden

Nachteile

  1. Die Implementierung is plattformabgängig
  2. Man kann keine Elemente verwenden die die Platform nicht kennt. Bsp. Windows kennt das Ereignis  „Mouse over Button“ nicht.

 

javafrage Sun, 01/25/2015 - 10:23

18 Reagieren auf Ereignisse einer Swing Benutzeroberfläche

18 Reagieren auf Ereignisse einer Swing Benutzeroberfläche
  • Nennen den englischen Begriff bzw. den Namen der Javaschnittstellen mit denen man auf Ereignisse in einer Swing-Benutzeroberfläche reagiert.
  • Wie arbeiten diese Objekte mit den grafischen Objekten zusammen um Ereignisse auszuwerten? Geben Sie eine Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1 + 3 Minuten

Antwort zu Frage 17: Vor- und Nachteile von grafischen Lightweight-Implementierungen

Vorteile

  1. plattformunabhängig
  2. man kann das gewünschte Layout besser kontrollieren

Nachteile

  1. Plattformoptimierungen werden nicht unbedingt unterstützt. Bsp. 3D Beschleunigung
  2. ungewohntes „Look & Feel“ auf der Gastplattform

 

javafrage Sun, 01/25/2015 - 10:34

19 Besonderheiten anonymer, innerer Klassen und deren Verwendung

19 Besonderheiten anonymer, innerer Klassen und deren Verwendung

Was ist das besondere an anonymen, inneren Klassen? Wann ist die Benutzung einer anonymen inneren Klasse die beste Lösung. Nennen Sie mindestens zwei Gründe.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+4 Minuten

Antwort zu Frage 18: Reagieren auf Ereignisse einer Swing Benutzeroberfläche

Das Listenerobjekt wurde gegen das Ereignis des graphischen Objekts registriert. Das graphische Objekt ruft beim entsprechenden Ereignis das Listenerobjekt auf. Das Listerobjekt enthält die Implementierung die auf das Ereignis reagiert.

javafrage Sat, 02/13/2016 - 16:31

20 Swing Toplevel Container

20 Swing Toplevel Container
  • Nennen Sie mindesten 2 Toplevel Container die man in Swing benutzt um grafische Benutzeroberflächen zu entwickeln. 
  • Welchen dieser Container würden Sie wählen wenn Sie eine typische Textverarbeitungsanwendung implementieren sollen? Ihre Anwendung soll mehrere Dokumente in mehreren Fenstern verwalten können
  • Welche weiteren nützlichen Eigenschaften hat dieser Container für Ihre Textverarbeitungsanwendung? Nennen Sie Eine!

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2+1+1
Schwierigkeitsgrad mittel
Zeit 2+1+1 Minuten

Antwort zu Frage 19: Besonderheiten anonymer, innerer Klassen und deren Verwendung

Sie haben keinen expliziten Namen. Man verwendet sie wenn es genau eine Stelle im Code gibt an der man Objekte dieser Klasse erzeugen muss.

  1. Es gibt nur eine Stelle an der diese Klasse benötigt wird
  2. Man belastet den Namensraum der Klassen weniger da man keinen Namen vergeben muss
javafrage Sun, 03/12/2017 - 18:32

Anonymous (not verified)

Thu, 05/16/2019 - 17:58

Frage 20, 2. Stichpunkt, 2 Satz:

1. sollte entweder das Fragezeichen weg, oder der Satz soll zu einer Frage umbenannt werden.
2. anstelle von "könne" "können"

21 Definition Layoutmanager mit Beispiel

21 Definition Layoutmanager mit Beispiel

Was sind Layout-Manager in Swing? (Definition)

Sie sollen in Swing ein Schachbrett implementieren und Visualisieren. Welchen Layout-Manager wählen Sie?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+1 Minuten

Antwort zu Frage 20: Swing Toplevel Container

Nennen Sie mindesten 2 Toplevel Container die man in Swing benutzt um grafische Benutzeroberflächen zu entwickeln:

  • JFrame
  • JApplet
  • JDialog
  • JWindow

Welchen dieser Container würden Sie wählen wenn Sie eine typische Textverarbeitungsanwendung implementieren sollen. Ihre Anwendung soll mehrere Dokumente in mehreren Fenstern verwalten könne?

  • JFrame

Welche weiteren nützlichen Eigenschaften hat dieser Container für Ihre Textverarbeitungsanwendung? Nennen Sie eine:

  • Man kann Menüleisten konfigurieren.

Ein Layout-Manager ist ein Objekt, welches Methoden bereitstellt, um die grafische Repräsentation verschiedener Komponenten innerhalb eines Container-Objektes anzuordnen

javafrage Sun, 03/12/2017 - 18:47

22 Anonyme, innere Klasse implementieren

22 Anonyme, innere Klasse implementieren

Implementieren Sie eine innere, anonyme Klasse in der main() Methode der Klasse Rahmen.

  • Die Klasse wird aus der Klasse Test spezialisiert
  • Die Methode result() wird überschrieben. Sie soll den Wert 17 zurückgeben.
  • Weisen Sie das neue Objekt auf die vorgebene Referenz t zu.
public class Test { 
   public int result() {return 3; } 
} // Ende Klasse Test 

public class Rahmen { 
   public static void main (String[] args)
  { // hier implementieren: 
      Test t = new                               //Ab hier implementieren





  } // Ende main Methode
} // Ende Klasse Rahmen 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 21: Definition Layoutmanager mit Beispiel

Ein Layout-Manager ist ein Objekt, welches Methoden bereitstellt, um die grafische Repräsentation verschiedener Komponenten innerhalb eines Container-Objektes anzuordnen 

GridLayout. Mit diesem Layout kann man ein zweidimensionales Feld von Komponenten organisieren.

Die Antwort zu Frage 22 finden Sie viel weiter unten...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 22: Anonyme, innere Klasse implementieren

public class Test { 
   public int result() {return 3; } 
} // Ende Klasse Test 

public class Rahmen { 
   public static void main (String[] args)
  { // hier implementieren: 
      Test t = new Test() {            public int result () {return 17;}            } // ende innere Klasse
  } // Ende main Methode
} // Ende Klasse Rahmen 
holodoctor Sat, 03/25/2017 - 14:35

Fragen zu generischen Typen

Fragen zu generischen Typen javafrage Sun, 03/19/2017 - 12:15

1. Generics: Typprüfung

1. Generics: Typprüfung

Die generische Klasse Punkt hat eine main() Methode mit einer Reihe von Fehlern.
Kommentieren im Quellcode jede Zeile aus die der Übersetzer nicht übersetzt.

  • Schreiben Sie hierzu ein Kommentarzeichen („//“) direkt vor die inkorrekte Zeile im Quellcode.
  • Geben Sie hinter der fehlerhaften Zeile eine kurze Erklärung warum die Zeile inkorrekt ist.

Beispiel:

// int i = null;// null ist ein Referenztyp der nicht zu int passt

Die Klasse Punkt:

public class Punkt<T extends Number> {

public T x;
public T y;

public Punkt(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] args) {
Punkt<Double> k11;
Punkt<Double> k12;
Punkt<Integer> k21;
Punkt<Integer> k22;
Punkt<Number> k41;
Punkt<Number> k42;
Punkt k55;
Punkt k66;

k11 = new Punkt<Double>(2.2d, 3.3d);
k21 = new Punkt<Integer>(2, 3);
k31 = new Punkt<String>("11","22");
k41 = new Punkt<Number>(2l, 3l);

k41 = new Punkt<Number>(4.4d, 5.5f);
k11 = new Punkt<Double>(3.3f,9.9d);

Punkt<?> k99;
k99 = k11;
k99 = k21;
k99 = k31;

k12 = k11;
k12 = k21;
// ...
k55 = new Punkt<Number>(7.7f, 8.8f);
k66 = new Punkt(7.7f, 8.8f);
}
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten
javafrage Wed, 02/01/2012 - 08:28

2. Generics: Typprüfung

2. Generics: Typprüfung

Die generische Klasse Flaeche hat eine main() Methode mit einer Reihe Fehlern. Kommentieren im Quellcode jede Zeile aus, die der Übersetzer nicht übersetzt.

  • Schreiben Sie hierzu ein Kommentarzeichen („//“) direkt vor die inkorrekte Zeile im Quellcode.
  • Geben Sie hinter der fehlerhaften Zeile eine kurze Erklärung warum die Zeile inkorrekt ist.

Beispiel:

// int i = null;// null ist ein Referenztyp der nicht zu int passt
Quellcode Beschreibung der Fehler
package Kurs2.Generics;

public class Flaeche<T extends Number> {
public T x;
public T y;

public Flaeche(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] a) {
Flaeche<Double> f1;
Flaeche<Double> f2;
Flaeche<Integer> f3;
Flaeche<Integer> f4;
Flaeche<Number> f5;
Flaeche<Number> f6;
Flaeche f7;
Flaeche f8;
Flaeche<?> f9;

f1 = new Flaeche<Double>(2.2d,3.3d);
f3 = new Flaeche<Integer>(2, 3);

f2 = f1;
f2 = f3;

f9 = new Flaeche<String>("11","22");
f5 = new Flaeche<Number>(2l, 3l);
f5 = new Flaeche<Number>(4.4d, 5.5f);
f1 = new Flaeche<Double>(3.3f,9.9d);
f7 = new Flaeche(2.2f,3.3f);
f7 = new Flaeche<Number>(7.7f, 8.8f);
f8 = new Flaeche(7.7f, 8.8f);

f9 = f1;
f9 = f2;
f1 = f9;
}
}
 

 

 

 

 

 

 

 

 

 

 

 

 

Ab hier ist mit Fehlern zu rechnen:



















 

Die Antworten finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 1. : Generics, Typprüfung

public class Punkt<T extends Number> {
   public T x;
   public T y;
 
   public Punkt(T xp, T yp) {
    x = xp;
    y = yp;
   }

public static void main(String[] args) {
   Punkt<Double> k11;
   Punkt<Double> k12;
   Punkt<Integer> k21;
   Punkt<Integer> k22;
   Punkt<Number> k41;
   Punkt<Number> k42;
   Punkt k55;
   Punkt k66;
 
   k11 = new Punkt<Double>(2.2d, 3.3d);
   k21 = new Punkt<Integer>(2, 3);
   //k31 = new Punkt<String>("11","22"); Variable wurde nicht deklariert
   k41 = new Punkt<Number>(2l, 3l);
 
   k41 = new Punkt<Number>(4.4d, 5.5f);
   //k11 = new Punkt<Double>(3.3f,9.9d); 3.3.f ist ein Float und kein Double wie gefordert
 
   Punkt<?> k99;
   k99 = k11;
   k99 = k21;
   //k99 = k31; k31 wurde nicht deklariert
 
   k12 = k11;
   //k12 = k21; k12 hat Parameter Double, k21 hat Parameter Integer
   ...
   k55 = new Punkt<Number>(7.7f, 8.8f);
   k66 = new Punkt(7.7f, 8.8f);
   }
}
javafrage Tue, 01/01/2013 - 13:58

3 "Upper Bound Wildcards" anwenden

3 "Upper Bound Wildcards" anwenden

Nutzen Sie das Konzept einer „Upper bound wildcard“ um die generische Klasse Koordinate zu deklarieren, die man nur für die Javaklassen Byte, Float, Integer, Short, Long, Double konfigurieren kann.

Anbei ein Bild der Javaklassenhierarchie:

Klassenhierarchie Number

Vervollständigen Sie den Kopf der Klasse Koordinate:

public class Koordinate

{ // Rumpf ist nicht relevant für diese Aufgabe

}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

 

 

Antwort zu Frage 2. : Generics, Typprüfung

Quellcode Beschreibung der Fehler
package Kurs2.Generics;

public class Flaeche<T extends Number> {
public T x;
public T y;

public Flaeche(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] a) {
Flaeche<Double> f1;
Flaeche<Double> f2;
Flaeche<Integer> f3;
Flaeche<Integer> f4;
Flaeche<Number> f5;
Flaeche<Number> f6;
Flaeche f7;
Flaeche f8;
Flaeche<?> f9;

f1 = new Flaeche<Double>(2.2d,3.3d);
f3 = new Flaeche<Integer>(2, 3);

f2 = f1;
//f2 = f3;

//f9 = new Flaeche<String>("11","22");
f5 = new Flaeche<Number>(2l, 3l);
f5 = new Flaeche<Number>(4.4d, 5.5f);
//f1 = new Flaeche<Double>(3.3f,9.9d);
f7 = new Flaeche(2.2f,3.3f);
f7 = new Flaeche<Number>(7.7f, 8.8f);
f8 = new Flaeche(7.7f, 8.8f);

f9 = f1;
f9 = f2;
//f1 = f9;
}
}

 

 

 

 

 


 

 

 






 

 

Ab hier ist mit Fehlern zu rechnen: 
Man darf keine Instanziierung von
Integer auf Double zuweisen
String ist keine Spezialisierung von Number


3.3f wird durch Autoboxing zu Instanz
von Float. Float leitet nicht aus
der Klasse Double ab

 



f9 muss ein Flaeche<Double> sein.
Keine sichere Zuweisung
 

javafrage Sun, 03/19/2017 - 12:05

4. Antwort zu Frage 3

4. Antwort zu Frage 3
public class Koordinate <T extends Number>
 { // Rumpf der Klasse. Er ist unbedeutend in dieser Aufgabe }
javafrage Sun, 03/19/2017 - 12:47

Fragen zur Nebenläufigkeit (Multithreading)

Fragen zur Nebenläufigkeit (Multithreading) holodoctor Tue, 03/21/2017 - 08:25

1 Nebenläufigkeit in einem Javaprogramm (Threading)

1 Nebenläufigkeit in einem Javaprogramm (Threading)

Bestimmen Sie welcher Code in welchem Thread ausgeführt wird.
Gegeben sei die Klasse ThreadTest1 die mit ihrer main() Methode als Programm gestartet wird :

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join();
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}

Schreiben die Konsolenausgaben des Programms auf. Gehen Sie davon aus, dass der Aufruf von Thread.currentThread() abhängig vom laufenden Thread eine der drei Zeichenketten ausgibt:
‘main’ wenn das Programm im Hauptthread ist (Anwendungsstart)
‘t1’ wenn es im Thread arbeitet welcher zur Referenz t1 gehört
‘t2’ wenn es im Thread arbeitet welcher zur Referenz t2 gehört

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten
javafrage Tue, 02/14/2012 - 10:07

2 Die Methode Thread.join()

2 Die Methode Thread.join()

Was bewirkt die Befehlszeile t1.join() im folgenden Programm?
Geben Sie eine kurze Erklärung.

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zur Frage 1: Threading

Hinweis: Der Quellcode von Frage 2.16 ist identisch zum Quellcode der Frage 2.17 auf dieser Seite oben.

Das Programm produziert die folgende Konsolenausgabe:

main:Anfang main
run: main
run: t1
main:Ende main

Der Thread t2 wird zwar erzeugt aber nie gestartet.

 

javafrage Wed, 02/15/2012 - 08:24

3 Prozesse und Threads

3 Prozesse und Threads

Was ist die Beziehung zwischen einem Thread und einem Prozess?

Was haben Sie gemeinsam ?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zur Frage 2: Die Methode Thread.join()

Der Haupthread (main) wartet bis der Thread t1 beendet wird bevor er mit der Abarbeitung fortfährt.

Das Beispiel zur Aufgabe:

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}
javafrage Thu, 02/16/2012 - 08:41

4 Thread.start() und Thread.run()

4 Thread.start() und Thread.run()

Die Javaklasse Thread zum nebenläufigen Programmieren besitzt eine Methode start() und eine Methode run().
Was wozu dienen diese beiden Methoden ?

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zur Frage 3: Prozesse und Threads

Ein Thread ist ein Teil eines Prozess. Er hat einen eigenen Programmzeiger und einen eigenen Stack (Stapel). Er teilt sich den Hauptspeicher mit dem Prozess.

javafrage Wed, 01/09/2013 - 09:09

Anonymous (not verified)

Tue, 06/04/2019 - 11:31

Hallo,

in der Antwort zur Frage 3, muss "ist" anstelle dem englischen "is" stehen :)

Gruß

5 Zustände eines Java-Thread

5 Zustände eines Java-Thread

 Nennen Sie mindestens 4 der 5 Zustände die ein Java-Thread besitzen kann.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 4: Thread.start() und Thread.run()

Antwort Methode start() :

  • Die Methode start() überführt einen Thread in den Zustand „ready to run“. Dies bedeutet, dass er mit der Ausführung beginnen kann

Antwort Methode run():

  • In der Methode run() steht der Code den der Thread ausführen soll. Er wird ausgeführt nachdem der Thread mit der Methode start() gestartet wurde.

 

javafrage Wed, 01/09/2013 - 09:16

6 Zustände von Threads

6 Zustände von Threads

Die Klasse Thread besitzt Methoden mit denen der Entwickler die verschiedenen Zustände eines Threads beeinflussen kann. Die Methoden die die Zustandsübergänge bewirken, sind zur Orientierung gegeben. Tragen Sie Namen der vier Zustände in das Diagramm ein!

 Zustandsübergänge von Threads

Die Lösung dieser Aufgabe finden Sie hier im Skript.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

 

Antwort zu Frage 5: Zustände eines Java-Thread

  1. new: Der Thread wurde mit dem new Operator erzeugt. Er befindet sich im Anfangszustand. Auf seine Daten kann man zugreifen. Er ist noch nicht ablauffähig.
  2. ready-to-run: Der Thread ist lauffähig und wartet auf eine Prozessorzuweisung
  3. running: Der Thread hat einen Prozessor und führt das Programm aus
  4. blocked: Der Thread wartet auf Ressourcen
  5. dead: Der Thread kann nicht wieder gestartet werden
javafrage Sat, 03/21/2015 - 16:48

7 Schützen mit dem Schlüsselwort "synchronized"

7 Schützen mit dem Schlüsselwort "synchronized"

Nennen Sie zwei Javakonstrukte die Sie mit dem Schlüsselwort synchronized schützen können. Was bedeutet „schützen“ im Kontext von Multithreading in Java? Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 6: Zustände von Threads

Zustandsübergänge von Threads

javafrage Sat, 02/13/2016 - 18:51

8 Kritischer Pfad

8 Kritischer Pfad

Was ist ein kritischer Pfad/Abschnitt? (Definition)

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 7: Schützen mit dem Schlüsselwort "synchronized"

  1. Methoden
  2. Blöcke

Schützen bedeutet, dass nur ein Thread einen kritischen Pfad (Programmcode) bearbeiten darf. Hier kann man gewährleisten, dass eine Anzahl von Operationen auf Daten nur von einem Thread ausgeführt werden können.

javafrage Sat, 03/25/2017 - 17:52

9 Was schützt man mit dem Schlüsselwort "synchronize"

9 Was schützt man mit dem Schlüsselwort "synchronize"

Welche zwei Arten von kritischen Pfade kann man in Java mit dem Schlüsselwort synchronize schützen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Kritischer Pfad

Ein kritischer Abschnitt ist eine Folge von Befehlen, die ein Thread nacheinander vollständig abarbeiten muss, auch wenn er vorübergehend die CPU and einen anderen Thread abgibt. Kein anderer Thread darf einen kritischen Abschnitt betreten, der auf die gleichen Variablen zugreift, solange der erstgenannte Thread mit der Abarbeitung der Befehlsfolge noch nicht fertig ist. (siehe: Goll, Seite 744)

javafrage Sat, 03/25/2017 - 17:58

10 Starten von Threads

10 Starten von Threads

Vervollständigen Sie die unten aufgeführte Klasse so, dass die Ausgabe „Hurra ich bin ein eigener Thread“ in einem anderen Thread als die main() Methode aufgerufen wird.

  • Vervollständigen Sie die main() Methode damit sie lauffähig wird
  • Implementieren Sie eine neue Methode um den Befehl mit der Ausgabe in einem eigenen Thread aufzurufen:
public class myThread extends Thread { 
   

      // mit eigener Methode umhüllen 
      System.out.println("Hurra ich bin ein eigener Thread"); 
   
  }

  public static void main(String[] args) { 
     
 
 
  }  // Ende main Methode 
} // Ende der Klasse myThread

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 9: Was schützt man mit dem Schlüsselwort "synchronize"

  1. Methoden
  2. Blöcke
javafrage Sat, 07/13/2019 - 10:35

11 Klassen aus dem Concurrency Package

11 Klassen aus dem Concurrency Package
  • Welche Klasse aus dem Concurrency-Paket verwenden Sie wenn mit mehreren Threads schreibend auf eine ganze Zahl zugreifen müssen?
  • Warum verwenden Sie diese Klasse?
  • Wie ist das Laufzeitverhalten dieser Klasse im Vergleich zum Basistyp int?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+2+2 Minuten

Antwort zu Frage: 10 Starten von Threads

public class myThread extends Thread { 
   public void run() { 

      // mit eigener Methode umhüllen 
      System.out.println("Hurra ich bin ein eigener Thread"); 
   
  }

  public static void main(String[] args) { 
     myThread t1 = new myThread();
      t1.start(); } 
 
  }  // Ende main Methode 
} // Ende der Klasse myThread
javafrage Sat, 07/13/2019 - 10:43

12 Parallisieren im Concurrency Package ohne Rückgabewerte

12 Parallisieren im Concurrency Package ohne Rückgabewerte

Sie möchten mit dem Concurrency-Paket parallel arbeiten. Sie benötigen keine Rückgabewerte. In welcher Klasse spezialisieren sie am besten und in welcher Methode implementieren Sie Ihren Algorithmus?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage: 11 Klassen aus dem Concurrency Package

  • AtomicInteger
  • Sie erlaubt das Testen und Schreiben in einer atomaren Operation. Nur ein Thread kann diese Operation gleichzeitig ausführen.
  • Sie ist deutlich langsamer, da Sie eine Klasse ist und der Zugriff durch Semaphore bzw. Monitore geschützt werden muss.
javafrage Sat, 07/13/2019 - 10:55

13 Klasse ForkJoinPool

13 Klasse ForkJoinPool

Was sind die Vorteile der Klasse ForkJoinPool auf dem Concurrency-Paket? Die Antwort finden Sie weiter unten auf dieser Seite.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage: 12 Parallelisieren im Concurrency Package ohne Rückgabewerte

  • Klasse: RecursiveAction
  • Methode: compute()

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage: 13 Klasse ForkJoinPool

Es wird ein Pool erzeugt, der so viele Software-Threads hat wie der Rechner Hardware-Threads.

Dadurch werden die Hardware-Threads optimal verwendet und das Betriebssystem hat weniger Stress mit dem Zuordnen der ausführbaren Threads.

javafrage Sat, 07/13/2019 - 10:58

Fragen zu Algorithmen

Fragen zu Algorithmen javafrage Tue, 03/21/2017 - 17:34

1 Quicksort

1 Quicksort

Führen Sie einen Durchlauf des Quicksorts zum Teilen des ersten Intervalls manuell durch. Teilen Sie ein gegebenes Sortierintervall (siehe Aufgabe „Vorher“) nach den Regeln des Quicksorts in zwei Unterintervalle die noch sortiert werden müssen.

  • Sortieren Sie aufsteigend 
  • Wählen Sie das Pivotelement ganz rechts im Intervall. Das Pivotelement soll zum größeren Intervall gehören.
  • Markieren Sie das Pivotelement im „Vorher“ Diagramm mit einem Pfeil von unten (siehe Beispiel).
  • Wenden Sie die Regeln des Quicksorts an. Zeichnen Sie zweiseitige Pfeile im "Vorher" Diagram ein, um die notwendigen Vertauschungen zu markieren.
  • Zeichnen Sie mit einem zweiseitigen Pfeil die nötige Vertauschung des Pivotelements im "Vorher" Diagramm ein.
  • Tragen Sie alle neuen Werte im "Nachher" Diagramm ein.
  • Zeichnen sie die beiden neuen zu sortierenden Intervalle mit eckigen Linien im „Nacher“ Diagramm ein.

Quicksortübung

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten
javafrage Thu, 02/02/2012 - 09:12

2 Quicksort, Pivotelement

2 Quicksort, Pivotelement

Wählt man beim Quicksort das Pivotelement immer am gleichen Rand des Intervals, so gibt es Zahlenreihen die nur sehr ineffizient sortiert werden.
Für welche Zahlenreihen trifft dies zu? Geben Sie ein Beispiel an.

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Quicksort

Quicksortlösung 

javafrage Thu, 02/02/2012 - 18:02

Anonymous (not verified)

Tue, 06/02/2015 - 14:13

Wir sind nach mehreren anläufen jedes mal auf die Lösung "2 1 3 4 5 9 8 7 6" gekommen. Warum ist bei Ihnen die 3 und 4 bzw. die 9 und 8 vertauscht?

Für die Behandlung des Pivotelements gibt es unterschiedliche akzeptable Strategien. In der Musterlösung wurde wie folgt vorgegangen:

  • Beginne links im Sortierinterval und merke das erste Element welches größer-gleich als 5 ist.
    • Dies ist die 9. Halte mit der Suche an
  • Beginne rechts im Sortierinterval und suche (fallend) das erste Element welches kleiner als 5 ist.
    • Dies ist die 4. Halte mit der Suche an.
  • Tausche 4 mit 9

Setze die Strategie des Suchens von links und rechts fort

  • Vergleiche von links kommend das nächste Element (die 8) ob es größer gleich 5 ist und halte dann an.
  • Vergleiche von rechts kommend, fallend das nächste Element (die 3) ob sie kleiner ist als die 5 und halte dann an
  • Tausche 8 mit 3

Jetzt kommt es zum "Endspiel". Die beiden Zeiger der Suche von links und rechts treffen sich. Hier gibt es wieder Freiheitsgrade.

  • Man kann die 6 mit der 5 tauschen und dann die 5 aus den zukünftigen Suchintervallen ausschließen
  • Falls der Wert auf der fünften Position kleiner als das Pivotelement gewesen wäre hätte man es stehen lassen und die fünfte Position in das neue linke Sortierintervall einbezogen.

 

3 Ungünstige Zahlenreihen für den Quicksort

3 Ungünstige Zahlenreihen für den Quicksort

Warum funktioniert das „Teile und Herrsche“ Prinzip des Quicksorts bei unvorteilhaften Zahlenreihen nicht gut?

Beispiele sind die folgenden Zahlenreihen

  • 1,2,3,4,5
  • 5,4,3,2,1

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 2: Quicksort, Pilotelement

Aufsteigende oder fallende Zahlenfolgen. z. Bsp. 1,2,3,4,5 oder 5,4,3,2,1

javafrage Fri, 02/03/2012 - 10:55

4 Heapsort, Baumpräsentation, Heapbedingung

4 Heapsort, Baumpräsentation, Heapbedingung

Zeigen Sie wie der logische Baum eines Heapsorts für ein gegebenes Feld von Schlüsseln aussieht.
Tragen Sie die Schlüssel und den Feldindex (die Feldposition) der Feldrepräsentation in die Heappräsentation unten ein.

Im Beispiel unten ist auf der Position 1 der Schlüssel 9 zu finden.
Tragen Sie Positionen und Schlüssel in das vorgegebene Baumdiagramm ein:

Diagramm eines Heapsorts

Gilt die Heapbedingung für diese Folge? Markieren Sie Knoten die die Heapbedingung verletzen.

Die Antworten finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5+2 Minuten

Antwort zu Frage 3: Ungünstige Zahlenreihen für den Quicksort

Weil keine ähnlich großen Teilintervalle entstehen.

Im schlimmsten Fall wird das Teilintervall immer nur um ein Element verkleinert.

Der Aufwand ist dann (n-1)+O(n-2)+...+O(3)+O(2)=O(n2) (Arihmetische Reihe)

Der Aufwand zum Bearbeiten der Teilintervalle kann dann im schlimmsten Fall O(n2) anstatt O (log(n)) wie bei ähnlich großen Teilintervallen sein.

javafrage Tue, 01/01/2013 - 16:28

5 Erklärung der Heapbedingung

5 Erklärung der Heapbedingung

Beschreiben in Worten was die „Heapbedingung“ des Heapsorts ist.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 4: Heapsort, Baumpräsentation, Heapbedingung

Diagramm eines Heapsorts

Die Heapbedingung gilt nicht für diese Folge. Sie ist für die Position 4 (Wert 1) verletzt.

javafrage Tue, 01/01/2013 - 17:34

6 Komplexitätsbetrachtungen 1

6 Komplexitätsbetrachtungen 1

Welche Komplexität haben die gezeigten Javamethoden?

Gegeben ist das folgende Javaprogramm:

Nr. Quellcode Antwort
 
public class K1 {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
}

 nichts eintragen
 Bsp.
static void algorithmusBsp(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int j = 1; j < n; j++) {
    int k = j * 3;
    }
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n) 
1. 
static void algorithmus1(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int i = 1; i < 1000; i++) {
    int k = i +2;
  }
}
 
 2.
static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    int p = n;
    for (int j = 1; j < p; j++) {
      int k = j - i;
    }
  }
} 
 
 3.
static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      for (int k = 1; k < n; k++) {
        int q = k - j - i;
      }
      int p=0;
        while (p<n) {
          p++;
          int r = n*p;
        }
    }
  }
}          
 
 4.
static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus2(n);
    }
  }
}
            
 
 
}// Ende der Klasse
 Nichts eintragen

 

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 5: Erklärung der Heapbedingung

Das Feld soll aufsteigend sortiert werden.
Jeder Vaterknoten muss größer als beide Unterknoten sein oder auch: jeder Knoten mit dem Index i muss größer als existierende Knoten mit Index 2*i und 2*i+1 sein.

javafrage Mon, 02/13/2012 - 09:42

Anonymous (not verified)

Tue, 06/27/2017 - 11:32

M.E. sind die Aussagen "Jeder Vaterknoten muss größer als beide Unterknoten sein." und "Jeder Knoten mit dem Index i muss größer als existierende Knoten mit Index 2*i und 2*i+1 sein." redundant. Könnten sie das bitte in der Antwort ersichtlich machen?

7 Komplexitätsbetrachtungen 2

7 Komplexitätsbetrachtungen 2

Tragen Sie die Aufwände O(n) für die gegeben Methoden des Javaprogramm ein.

Nr. Quellcode Antwort
 
public class K1 {
private static int groesse = 1000;
public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
for (int i = 1; i < n; i++)
{ int k = i * 2; }
for (int j = 1; j < n; j++)
{ int k = j * 3;}
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
int i = 0;
while (i<1000) {
i++;
int k = i +2;
}
}
 
2.
  static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
int p = n;
for (int j = 1; j < p; j++) {
for (int k = 1; k < n; k++) {
int s = j*k – i;
}
}
}
}
 
3.
  static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k= 0;
while (k<n) {
k++;
int q = k - j - i;
}
int p=0;
while (p<n) {
p++;
int r = n*p;
}
}
}
}
 
4.
  static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
algorithmus2(n);
}
}
}
 
 
 }// Ende der Klasse
 ---

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 6: Komplexitätsbetrachtungen 1

Gegeben ist das folgende Javaprogramm:

Nr. Quellcode Antwort
 
public class K1 {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
}

 nichts eintragen
 Bsp.
static void algorithmusBsp(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int j = 1; j < n; j++) {
    int k = j * 3;
    }
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n) 
1. 
static void algorithmus1(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int i = 1; i < 1000; i++) {
    int k = i +2;
  }
}
O(n)+O(1000)=O(n) 
 2.
static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    int p = n;
    for (int j = 1; j < p; j++) {
      int k = j - i;
    }
  }
} 
O(n)*O(n)=O(n2)
 3.
static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      for (int k = 1; k < n; k++) {
        int q = k - j - i;
      }
      int p=0;
        while (p<n) {
          p++;
          int r = n*p;
        }
    }
  }
}          
O(n)*O(n)*[O(n)+O(n)]=O(n3)
 4.
static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus2(n);
    }
  }
}
            

O(n)*[O(1000)*O(algorithmus2)]=

O(n)*O(algorithmus2)=O(n3)

 
}// Ende der Klasse
 Nichts eintragen
javafrage Wed, 01/09/2013 - 08:48

8 Komplexitätsbetrachtungen 3

8 Komplexitätsbetrachtungen 3

Welchen Aufwand O haben die Methoden algorithmus1() bis algorithmus8() des folgenden Programms abhängig vom Übergabeparameter n?

Gehen Sie davon aus, das der Java JIT (Just in Time Compiler) nichts optimiert.

Hinweis: Wie oft werden die jeweiligen Schleifen durchlaufen? Welche Durchläufe sind konstant, welche variabel?

package Kurs2.Sort;

public class Komplexität {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
algorithmus5(groesse);
algorithmus6(groesse);
algorithmus7(groesse);
}

public static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
}

public static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
int k = j - i;
}
}
}

public static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k = j - i;
}
}
}

public static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
for (int k = 1; k < n; k++) {
int q = k - j - i;
}
}
}
}

public static void algorithmus5(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; i++) {
int k = j - i;
}
for (int j = 1; j < 1000; j++) {
int k = j - i;
}
}
}

public static void algorithmus6(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < i; j++) {
int k = j - i;
}
}
}

public static void algorithmus7(int n) {
for (int i = 1; i < 1000; i++) {
int j = 0;
while (j < 1000) {
j++;
int k = 2 * j;
}
}
}

public static void algorithmus8(int n) {
for (int i = 1; i < n; i++) {
algorithmus1(n);
}
}

} // Ende der Klasse

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 16 Minuten

Antwort zu Frage 7:Komplexitätsbetrachtungen 2

Nr. Quellcode Antwort
 
public class K1 {
private static int groesse = 1000;
public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
for (int i = 1; i < n; i++)
{ int k = i * 2; }
for (int j = 1; j < n; j++)
{ int k = j * 3;}
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
int i = 0;
while (i<1000) {
i++;
int k = i +2;
}
}
Ofor1(n)+Ofor2(1000)= Ofor1(n)+Ofor2(1) = O(n)
2.
  static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
int p = n;
for (int j = 1; j < p; j++) {
for (int k = 1; k < n; k++) {
int s = j*k – i;
}
}
}
}
 Ofor1(n)*Ofor2(n)*Ofor3(n) = O(n3)
3.
  static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k= 0;
while (k<n) {
k++;
int q = k - j - i;
}
int p=0;
while (p<n) {
p++;
int r = n*p;
}
}
}
}
Ofor1(n)*Ofor2(n)*(Owhile1(n)+Owhile2(n))
Ofor1(n)*Ofor2(n)*2*Owhile(n)= 2*O(n3) = O(n3
4.
  static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
algorithmus2(n);
}
}
}
 Ofor(n)*Ofor2(1000)*Oalgorithmus2(n3) = O(n4)
 
 }// Ende der Klasse
 ---
javafrage Wed, 01/09/2013 - 09:32

9 Binäre Suche

9 Binäre Suche

Fügen im folgenden Beispiel eine binäre Suche nach dem vorgegebenen Schlüssel durch. Zeichnen Sie die notwendigen Vergleiche mit Hilfe von Pfeilen wie im Beispiel der sequentiellen Suche ein:

Sequentielle und binäre Suche

Wieviele Vergleiche benötigen Sie bei der binären Suche in der obigen Folge mit 15 Elementen maximal bis der Schlüssel gefunden ist?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3+1 Minuten

Antwort zu Frage 8: Kompexitätsbetrachtungen 3

Quellcode Antworten mit Erklärung
package Kurs2.Sort;
public class Komplexitaet;
  private static int groesse = 1000;

  public static void main(String[] args) {
    algorithmus1(groesse);
    algorithmus2(groesse);
    algorithmus3(groesse);
    algorithmus4(groesse);
    algorithmus5(groesse);
    algorithmus6(groesse);
    algorithmus7(groesse);
  }
 
  public static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int k = i * 2;
    }
  }
Die for-Schleife wird n mal durchlaufen: O(n) 
  public static void algorithmus2(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < 1000; j++) {
       int k = j - i;
      }
    }
  }

Die innere for-Schleife wird 1000 mal durchlaufen:

  • O(1000) = Oinnere(1)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(1)=Oaeussere(n)

Gesamtkomplexität: O(n)

  public static void algorithmus3(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < n; j++) {
        int k = j - i;
      }
   }
  }
Die innere for-Schleife wird n mal durchlaufen: 
  • Oinnere(n)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(n)=Oaeussere(n2)

Gesamtkomplexität: O(n2)

  public static void algorithmus4(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < n; j++) {
        for (int k = 1; k < n; k++) {
          int q = k - j - i;
        }
      } 
    }
  }

Die innere for-Schleife wird n mal durchlaufen:

  • Oinnere(n)

Die mittlere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(n) = Omittlere(n2)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Omittlere(n2)= Oaeussere(n3)

Gesamtkomplexität: O(n3)
 

  public static void algorithmus5(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < 1000; j++) {
        int k = j - i;
      }
      for (int j = 1; j < 1000; j++) {
        int k = j - i;
      }
    }
  }

Jede der inneren Schleifen wird 1000 mal durchlaufen und hat damit einen konstanten Aufwand

  • Oinnere2(1000)+Oinnere2(1000)= Oinnere2(1)+Oinnere2(1)=Oinnen(1)

Die äussere Schleife wird n mal durchlaufen:

  • O(n)*Oinnen(1)=Oaeussere(n)

Gesamtkomplexität: O(n)

  public static void algorithmus6(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < i; j++) {
        int k = j - i;
      }
    }
  }

Jede der inneren Schleifen wird i mal durchlaufen:

  • Oinnen(i)

Die äussere Schleife wird n mal durchlaufen:

  • O(n)*Oinnen(i)

Beide Schleifen haben gemeinsam die Durchläufe 1+2+3... +n = (n-1)n/2 = (n2-n)2

  • O(n)*Oinnen(i)=(O(n2)-O(n))/O(2)=O(n2)/O(1)=Oaussen(n2)

Gesamtkomplexität: O(n2)
Bemerkung: Das Zusammenwirken geschachtelter Schleifen ist nicht trivial. Es müssen alle relevanten Variablen aufgelöst und es muss eine Summenformel entwickelt werden.

   public static void algorithmus7(int n) {
    for (int i = 1; i < 2000; i++) {
      int j = 0;
      while (j < 1000) {
        j++;
        int k = 2 * j;
      }
    }
  }

Die while-Schleife wird 1000 mal durchlaufen. Ihr Aufwand ist konstant:

  • Owhile(1000)=Owhile(1) 

Die for-Schleife wird wird 2000 mal durchlaufen. Ihr Aufwand ist konstant:

  • O(2000)*Owhile(1)=O(1)*Owhile(1)=Ofor(1)

Gesamtkomplexität: O(1)

  public static void algorithmus8(int n) {
    for (int i = 1; i < n; i++) {
      algorithmus1(n);
    }
  }

Die Methode algorithmus1() hat den Aufwand O(n). Siehe weiter oben.

Die for-Schleife wird n mal durchlaufen:

  • O(n)*O(n)=Ofor(n2)

Gesamtkomplexität: O(n2)

} // Ende der Klasse

 

javafrage Mon, 03/17/2014 - 08:19

Anonymous (not verified)

Thu, 05/04/2017 - 06:20

Wie kann ich den an der Aufgabenstellung erkennen das es sich um eine sortierte Folge handelt?

Grüße

Für alle i von Null bis zum höchsten Element der Folge f gilt: fi < fi+1

10 Aufwand binäre Suche und sequentielle Suche

10 Aufwand binäre Suche und sequentielle Suche
  • Welchen Aufwand O() hat die binäre Suche?
  • Welchen Aufwand O() hat die sequentielle Suche?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 9: Binäre Suche

Beispiel einer binären Suche

Man benötigt maximal 4 Vergleiche.

javafrage Mon, 03/17/2014 - 08:27

Anonymous (not verified)

Mon, 05/11/2020 - 19:02

Bei der Binären Suche liegt ein Fehler vor. Es sind lediglich 3 Vergleiche die gemacht werden.

Im ersten Schritt 15 - ist richtig
Im zweiten Schritt muss allerdings die 19 markiert werden anstelle der 21.
Im dritten Vergleichsschritt kommt man dann direkt auf die 23

Viele Grüße!

11 Komplexitätsbetrachtungen 4

11 Komplexitätsbetrachtungen 4

Tragen Sie die Aufwände O(n) für die gegeben Methoden des Javaprogramm ein.

Nr. Quellcode Antwort
 
public class K1 {
   private static int groesse = 1000;
 
   public static void main(String[] args) {
     algorithmusBsp(groesse);
     algorithmus1(groesse);
     algorithmus2(groesse);
     algorithmus3(groesse);
     algorithmus4(groesse);
   } 
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
     for (int i = 1; i < n; i++)
        { int k = i * 2; }
     for (int j = 1; j < n; j++)
        { int k = j * 3;}
   }
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int p = n;
      for (int j = 1; j < p; j++) {
        for (int k = 1; k < n; k++) {
          int s = j*k – i;
        } // end for
      } // end for
    } // end for
  }
 
2.
  static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      int k= 0;
      while (k<n) {
         k++;
         int q = k - j - i;
      }
      int p=0;
      while (p<n) {
          p++;
          int r = n*p;
       } // end while
    } // end for
  } // end for
}
 
3.
  static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
   for (int j = i; j < n; j++) {
    int k=0;
    while (k<1000000) {  
      k++;
      int r = i*j*k;
 } // end while
   } // end for
  } // end for
}
 
4.
  static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus1(n);
    }
  }
}
 
 
 }// Ende der Klasse
 ---

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 10: Aufwand binäre und sequentielle Suche

  • Aufwand O() der binären Suche: O(log(n))
  • Aufwand O() der sequentiellen Suche: O(n)
javafrage Sun, 03/01/2015 - 11:18

12 Bubblesort

12 Bubblesort

Der BubbleSort besteht aus einer äusseren Schleife in der das zu sortierende Intervall jeweils verkleinert wird.
In einer inneren Schleife wird das größte Element als « Bubble » bestimmt. Führen Sie einen solchen Durchlauf einer inneren Schleife an der unten gezeigten Folge durch. Sortieren sie aufsteigend.

Markieren Sie alle notwendigen Vergleiche und Vertauschungen.
Fügen Sie alle Werte in das Diagramm ein
 Diagramm einer Folge die im Bubblsort sortiert werden soll

Welchen Aufwand O() hat der Bubblesort?

In welchem Fall ist ein aufsteigend sortierender Bubblesort ein sehr effizienter Algorithmus?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8+1+1 Minuten

Antwort zu Frage 11: Komplexitätsbetrachtungen 4

Nr. Quellcode Antwort
 
public class K1 {
   private static int groesse = 1000;
 
   public static void main(String[] args) {
     algorithmusBsp(groesse);
     algorithmus1(groesse);
     algorithmus2(groesse);
     algorithmus3(groesse);
     algorithmus4(groesse);
   } 
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
     for (int i = 1; i < n; i++)
        { int k = i * 2; }
     for (int j = 1; j < n; j++)
        { int k = j * 3;}
   }
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int p = n;
      for (int j = 1; j < p; j++) {
        for (int k = 1; k < n; k++) {
          int s = j*k – i;
        } // end for
      } // end for
    } // end for
  }
Ofor1(n)*Ofor2(n)*Ofor3(n) = O(n3
2.
  static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      int k= 0;
      while (k<n) {
         k++;
         int q = k - j - i;
      }
      int p=0;
      while (p<n) {
          p++;
          int r = n*p;
       } // end while
    } // end for
  } // end for
}

Ofor1(n)*Ofor2(n)*(Owhile1(n)+Owhile2(n)) =

Ofor1(n)*Ofor2(n)*O(n) =

O(n3

3.
  static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
   for (int j = i; j < n; j++) {
    int k=0;
    while (k<1000000) {  
      k++;
      int r = i*j*k;
 } // end while
   } // end for
  } // end for
}

Ofor1(n)*Ofor2(n)*(Owhile1(1000)) =

Ofor1(n)*Ofor2(n) =

O(n2

4.
  static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus1(n);
    }
  }
}

Ofor1(n)*Ofor2(1000)*Oalgorithmus1(n) =

Ofor1(n)*O(n3) =

O(n4

 
 }// Ende der Klasse
 ---
javafrage Sat, 03/21/2015 - 13:04

13 Komplexitätsbetrachtungen 5

13 Komplexitätsbetrachtungen 5

Ein Algorithmus A und B verarbeiten jeweils n Datensätzen.

  • Algorithmus A benötigt einmalig 50000000 Instruktionen mehr als Algorithmus B beim Starten. Ansonsten ist die Anzahl der Instruktionen pro Datensatz konstant.
  • Algorithmus B benötigt 4 mal mehr Instruktionen pro Datensatz als Algorithmus A

Leiten Sie die beiden Komplexitätsklassen der Algorithmen her.

Vergleichen Sie die beiden Komplexitätsklassen und geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4+4 Minuten

Antwort zu Frage 12: Bubblesort

Bubblesort mit Musterlösung

Welchen Aufand O() hat der Bubblesort ?

O(n2)

In welchem Fall ist ein aufsteigend sortierender Bubblesort ein sehr effizienter Algorithmus?

Bei einer vorsortierten Folge

javafrage Mon, 12/07/2015 - 12:42

14 Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

14 Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

Was ist die Sortiergrenze in der Folge in der durch Sortieren durch Einfügen
sortiert wird?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 13: Komplexitätsbetrachtungen 5

OA (n) =O (5000000+k*n)=O (1)+O (n)=OA (n)

OB (n) =OA (4n)= OA (n)

Beide Algorithmen sind in der gleichen Komplexitätsklasse. Der zweite Algorithmus wird bei sehr kleinen Anzahlen etwas schneller sein.

holodoctor Sat, 03/25/2017 - 14:47

15 Sortieren durch Einfügen: Ein Beispiel

15 Sortieren durch Einfügen: Ein Beispiel

Die unten aufgeführte Folge im Diagramm wird aufsteigend sortiert und ist schon teilsortiert. Markieren Sie im Diagramm die Sortiergrenze mit einem Pfeil.

Führen Sie nun einen Durchlauf des Insertionsorts durch.

  • Vergleichen und Tauschen Sie den nächsten Wert solange bis er an der richtigen Stelle steht (3 Min.)
  • Markieren Sie die neue Sortiergrenze mit einem Pfeil (1 Min.)

Hinweis: Markieren Sie eine nötige Vertauschung wie im Beispiel gezeigt.
Tragen Sie dann die neuen Werte in die nächste Zeile ein.
Benutzen Sie dann eine neue Zeile.

Übung Insertionssort

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+4 Minuten

Antwort zu Frage 14: Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

Die Grenze zwischen der unsortierten und der sortierten Folge

javafrage Sat, 03/25/2017 - 15:02

16 Fragen zum Sortieren durch Einfügen

16 Fragen zum Sortieren durch Einfügen

Ein paar Fragen zum Sortieren durch Einfügen...

  • Welchen Komplexitätsaufwand hat dieser Algorithmus?
  • Nennen Sie zwei Algorithmen aus der Vorlesung die eine bessere Aufwandsklasse besitzen.
  • Welchen Vorteil hat der Insertionsort immer gegenüber den beiden Algorithmen die eine bessere Komplexitätsklasse besitzen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+2+2 Minuten

Antwort zu Frage 15 Sortieren durch Einfügen: Ein Beispiel

Lösung zur Aufgabe Soertieren durch EInfügen

Die Antwort zur aktuellen Frage finden Sie viel weiter unten

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 16: Fragen zum Sortieren durch Einfügen

  • Durchschnittlicher Aufwand: Oinsertionsort(n) = O(n2)
  • Effizientere Sortierverfahren
    1. Quicksort
    2. Heapsort
  • Er ist stabil.
javafrage Sat, 03/25/2017 - 15:14

Anonymous (not verified)

Tue, 06/27/2017 - 09:13

Die durchschnittliche Komplexität eines Insertion Sorts ist O(n^2). Wobei beste Komplexität O(n) ist (bei sortierten Listen) und schlechteste O(n^2).

Quelle: bigocheatsheet

Anmerkung: Evtl. liegt hier ein Darstellungsproblem in ihrer Lösung vor und O(n2) meint O(n^2).

Fragen zu Collections

Fragen zu Collections javafrage Wed, 03/22/2017 - 20:20

1 Java Collections Framework: Listen

1 Java Collections Framework: Listen

In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt einer java.util.ArrayList Klasse zu verwenden?

Nennen sie vorteilhafte Szenarien (mindestens 3).

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten
javafrage Sun, 01/29/2012 - 21:54

2 Bewertung der Klasse ArrayList

2 Bewertung der Klasse ArrayList

In welchen Anwendungszenarien ist es von Vorteil die Klasse ArrayList anstatt eines einfachen Feld ( [] Notation) zu verwenden?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Java Collections Framework: Listen

  • Viele Einfügeoperationen in der Mitte der Liste
  • Viele Entfernoperationen in der Mitte der Liste
  • Nur sequentielles Lesen erforderlich
javafrage Tue, 01/31/2012 - 20:42

3 Iterieren über den Typ TreeMap

3 Iterieren über den Typ TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

TreeMap<Double, String> myMap= new TreeMap<Double, String>
myMap.put(3.3d,‘Anton‘);
myMap.put(1.1d,‘Bruno‘);
myMap.put(2.2d,‘Charles‘);

Welche Werte werden beim Iterieren über die Schlüssel von myMap in welcher Reihefolge
ausgegeben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 2: Bewertung der Klasse ArrayList

  • Schnelles, dynamisches Wachsen erforderlich
  • Verkleinern der Datenstruktur muss effizient erfolgen

 

javafrage Tue, 01/31/2012 - 20:52

4 Java Collections: HashSet und TreeSet

4 Java Collections: HashSet und TreeSet

In welchen Fällen ist es von Vorteil eine java.util.HashSet Klasse anstatt einer java.util.TreeSet Klasse zu verwenden?

Nennen sie zwei vorteilhafte Szenarien

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 3: Iterieren über den Typ TreeMap

Double ist der Schlüssel. Das Objekt myMap der Klasse TreeMap ist nach dem Schlüssel sortiert.

  • 1.1d
  • 2.2d
  • 3.3d.
javafrage Fri, 12/28/2012 - 20:55

5 Klasse TreeMap

5 Klasse TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

package Kurs2.K2012;
import java.util.Set;
import java.util.TreeMap; public class CollectionAufgabe
   public static void main(String[] args) {       TreeMap<String, Double> myMap= new TreeMap<String,Double>();       myMap.put("Anton" ,3.3d);       myMap.put("Charles",1.1d);       myMap.put("Bruno" ,2.2d);
      for (String s:myMap.keySet())          System.out.println(s);    } }
  • Welche Werte werden beim Iterieren über myMap in welcher Reihenfolge ausgegeben? 
  • Wird über die Schlüssel oder die Werte der Map iteriert?
Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten + 1 Minute

Antwort zu Frage 4: Java Collections: HashSet und TreeSet

  • man benötigt nur eine unsortierte Menge.
  • man muss sehr viele Einfügungen und Entfernoperationen ausführen.
javafrage Sun, 12/30/2012 - 14:24

6 Java Collections und Generezität

6 Java Collections und Generezität

Die Klassen und Schnittstellen des Java Collection Framework sind generisch. Welchen Vorteil hat dies? (Kurze Erklärung)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 5: Klasse TreeMap

Konsolenausgabe:

  • Anton
  • Bruno
  • Charles

Es wird über die Schlüssel iteriert

 

 

javafrage Sun, 12/30/2012 - 14:42

7 Vorteile einer LinkedList im Vergleich zu einer ArrayList

7 Vorteile einer LinkedList im Vergleich zu einer ArrayList

In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

Nennen sie zwei vorteilhafte Szenarien

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 6: Java Collections und Generezität

Das Java Collection Framework wird typsicher.
Beim Auslesen von Objekten kann man sich auf den Erhalt eines Objekts mit dem vorgegebenen Typ verlassen.
Die Typinformation geht nicht verloren.
Es werden weniger explizite Typkonversionen (Casts) benötigt

javafrage Sun, 03/16/2014 - 18:27

8 Iterieren über TreeMap

8 Iterieren über TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

TreeMap<Integer, String> myMap= new TreeMap<Integer, String>();
myMap.put(33,“Anton“);
myMap.put(11,“Charles“);
myMap.put(22,“Bruno“);

Welche Werte werden beim Iterieren über die Schlüssel von myMap in welcher Reihenfolge ausgegeben?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 7: Vorteile einer LinkedList im Vergleich zu einer ArrayList

  1. Viele Einfüge oder Löschoperationen in der Liste
  2. Listenwachstum ist unvorhersehbar
  3. Zugriff auf Listenelemente mit einem Index ist nicht wichtig

 

 

javafrage Sun, 03/16/2014 - 18:38

Anonymous (not verified)

Sun, 06/19/2016 - 12:34

Kann man nicht auch bei ArrayList mit einem unvorhersehbarem Listenwachstum umgehen? Es ist ja auch eine Liste - und eben gerade kein reines Feld?

Stefan Schneider

Sun, 06/19/2016 - 14:49

In reply to by Anonymous (not verified)

das Einfügen in der Mitte oder am Anfang erfordert wahrscheinlich ein Umkopieren.
Das kann man ausprobieren. Suche Sie mal nach dem Nanotimer im Skript.

Zu Ihrem letzten Satz: Es ist ein Feld welches als Liste verwendet wird.

9 Java Collections und Schnittstellen

9 Java Collections und Schnittstellen

Warum werden die meisten Java Collections als Schnittstellen angeboten und nicht als einfache Klassen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Iterieren über TreeMap

  • 11
  • 22
  • 33
javafrage Sun, 03/16/2014 - 18:46

10 Java Collection Framework (Mengen, Listen)

10 Java Collection Framework (Mengen, Listen)

Im folgenden Beispielprogramm soll eine mathematische Menge von Objekten der Klasse String
verwendet werden.

In die Menge werden drei Zeichenketten eingetragen. Anschließend soll über die Menge der Zeichenketten zweimal iteriert werden.
1. Wählen Sie aus dem Collection Framework eine Klasse die sortierte Mengen verwaltet.
Tragen Sie den passenden Aufruf mit dem new Operator in der Zeile ein, in der die Variable s belegt wird.

2. Implementieren Sie im nachfolgenden Code eine erweiterte for-Schleife, die alle Zeichenketten auf der Konsole ausgibt ohne das ein Iterator verwendet wird.

3. Implementieren Sie eine while Schleife die den gegeben Iterator nutzt und alle Elemente der Menge auf der Konsole ausdruckt:

import java.util.*;
public class PersonenMenge{
/** In dieser Methode Code eintragen ! */
   public static void main(String[] args) {
     String p1 = new String("Schmidt");
     String p2 = new String("Mueller");
     String p3 = new String("Maier");

     Set<String> s = new ??         // 1.
     s.add(p1);
     s.add(p2);
     s.add(p3);

     // 2. Erweiterte for Schleife und Ausgabezeile implementieren

     Iterator<String> i = s.iterator();
     String ppp; // Hilfsvariable zum Iterieren

     // 3. While Schleife mit Iteratorbenutzung und Ausgabezeileimplementieren

   } // Ende main Methode
} // Ende der Klasse

4. Nennen Sie den Vorteil des Typs der in der ersten Frage gefordert wurde.

5. Nennen Sie Nachteile des Typs der in der ersten Frage gefordert wurde.

6. Welche Klasse zur Verwaltung von Mengen bietet das Java Collection Framework an, wenn die Sortiereihenfolge nicht wichtig ist?

7. Nennen Sie die Vorteile des Mengentyps (6.) der die Menge nicht sortiert verwaltet.

8. In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

  • Nennen sie zwei vorteilhafte Szenarien

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+4+4+2+2+2+2+2 Minuten

Antwort zu Frage 9: Java Collections und Schnittstellen

Entwickler können sich unterschiedliche Implementierungen abhängig vom Anwendungsfall auswählen. Die zu benutzenden Schnittstellen bleiben gleich.

javafrage Sat, 03/21/2015 - 13:28

11 Mengen in Java Collections

11 Mengen in Java Collections

Für die Verwaltung von Mengen (engl. Set) gibt es im Java Collection Framework eine Schnittstelle Set und zwei Klassen, die diese Schnittstelle implementieren. Nennen Sie die beiden Klassen, die die Schnittstelle Set implementieren. Welche Vorteile hat dieser Ansatz bei dem für Mengen eine Schnittstelle und zwei Klassen benutzt werden? Geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+3 Minuten

Antwort zu Frage 10: Java Collection Framework (Mengen, Listen)

In die Menge werden drei Zeichenketten eingetragen. Anschließend soll über die Menge der Zeichenketten zweimal iteriert werden.
1. Wählen Sie aus dem Collection Framework eine Klasse die sortierte Mengen verwaltet.
Tragen Sie den passenden Aufruf mit dem new Operator in der Zeile ein, in der die Variable s belegt wird.

2. Implementieren Sie im nachfolgenden Code eine erweiterte for-Schleife, die alle Zeichenketten auf der Konsole ausgibt ohne das ein Iterator verwendet wird.

3. Implementieren Sie eine while Schleife die den gegeben Iterator nutzt und alle Elemente der Menge auf der Konsole ausdruckt:

import java.util.*;
public class PersonenMenge{
/** In dieser Methode Code eintragen ! */
   public static void main(String[] args) {
     String p1 = new String("Schmidt");
     String p2 = new String("Mueller");
     String p3 = new String("Maier");

     Set<String> s = new TreeSet<String>();         // 1.
     s.add(p1);
     s.add(p2);
     s.add(p3);

     // 2. Erweiterte for Schleife und Ausgabezeile implementieren
     for (String p : s) {
System.out.println("Person:" + p);
}
Iterator<String> i = s.iterator(); String ppp; // Hilfsvariable zum Iterieren // 3. While Schleife mit Iteratorbenutzung und Ausgabezeileimplementieren while (i.hasNext()) {
ppp = i.next();
System.out.println("Person:" + ppp);
}
} // Ende main Methode } // Ende der Klasse

4. Nennen Sie den Vorteil des Typs der in der ersten Frage gefordert wurde.

  • Man kann sortiert über die Menge nach einem Schlüssel iterieren

5. Nennen Sie Nachteile des Typs der in der ersten Frage gefordert wurde.

  • Einfügen ist aufwendiger
  • Entfernen ist aufwendiger

6. Welche Klasse zur Verwaltung von Mengen bietet das Java Collection Framework an, wenn die Sortiereihenfolge nicht wichtig ist?

  • HashSet

7. Nennen Sie die Vorteile des Mengentyps (6.) der die Menge nicht sortiert verwaltet.

  • Sehr effizientes Einfügen und Löschen von Elementen

8. In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

  • Viele Einfüge oder Löschoperationen in der Liste
  • Listenwachstum ist unvorhersehbar
  • Zugriff auf Listenelemente mit einem Index ist nicht wichtig
javafrage Sat, 02/13/2016 - 18:28

12 Iterieren mit der enhanced-for Schleife über eine ArrayList

12 Iterieren mit der enhanced-for Schleife über eine ArrayList

Das folgende Programm verwaltet Namen als Zeichenketten in einer ArrayList.

Implementieren eine erweiterte for Schleife („enhanced for loop“) mit der man elegant über alle Objekte der ArrayList iterieren kann.

Lassen Sie innerhalb der for-Schleife die Namen auf die Konsole drucken.

import java.util.ArrayList;
import java.util.List;
 
public class PersonenListeFor {
 
    public static void main(String[] args) {
 
        String p1 = new String("Schmidt");
        String p2 = new String("Mueller");
        String p3 = new String("Maier");
        List<String> s = new ArrayList<String>();
        s.add(p1);
        s.add(p2);
        s.add(p3);
        
        // Erweiterte (enhanced) for Schleife mit 
        // Konsolenausgabe hier implementieren

   } // Ende main Methode} // 
} // Ende der Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 11: Mengen in Java Collections

  1. HashSet
  2. TreeSet

Falls sich die Anforderungen an den Datentypen ändern kann man die Implementierung austauschen in dem man nur an einer Stelle (Objekterzeugung) eine Änderung vornimmt. Man kann auch selbst neue Implementierungen beisteuern die spezielle Eigenschaften haben ohne den Code in dem Typen verwendet werden zu ändern.

 

 

Die Antwort zur Frage dieser Seite finden Sie weiter unten...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 12: Iterieren mit der enhanced-for Schleife über eine ArrayList

import java.util.ArrayList;
import java.util.List;
 
public class PersonenListeFor {
 
    public static void main(String[] args) {
 
        String p1 = new String("Schmidt");
        String p2 = new String("Mueller");
        String p3 = new String("Maier");
        List<String> s = new ArrayList<String>();
        s.add(p1);
        s.add(p2);
        s.add(p3);
        
        // Erweiterte (enhanced) for Schleife mit 
        // Konsolenausgabe hier implementieren
        for ( String a: s) { 

System.out.println(“Name: “+ a);

} } // Ende main Methode} // } // Ende der Klasse

 

javafrage Sat, 02/13/2016 - 18:41

Fragen zu Datenstrukturen

Fragen zu Datenstrukturen javafrage Wed, 03/22/2017 - 20:18

1 Binärbäume

1 Binärbäume

Welche der Bäume sind korrekte, streng aufsteigend sortierte Binärbäume? Was sind die Fehler in den nicht korrekten Bäumen?

Geben Sie eine kurze Begründung.

Binärbaum 1 Binärbaum 2
erster Binärbaum zweiter Binärbaum

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten
javafrage Tue, 02/07/2012 - 08:22

2 AVL-Bäume

2 AVL-Bäume

Welche der beiden Bäume sind korrekte AVL-Bäume? Was sind die Fehler in den nicht korrekten Bäumen?

AVL-Baum 1 AVL-Baum 2
 AVL Baum 1 AVL Baum 2 

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 1: Binärbäume

Geben Sie eine kurze Begründung.

Binärbaum 1 Binärbaum 2

erster Binärbaum

Dieser Baum ist korrket

zweiter Binärbaum

Dieser Baum ist nicht korrekt. Der Knoten 2 müsste links von 4 eingeordnet sein

javafrage Wed, 02/08/2012 - 08:35

3 Bruderbäume

3 Bruderbäume

Welche der beiden Bäume sind korrekte Bruderbäume? Was sind die Fehler in den nicht korrekten Bäumen? Bitte geben Sie eine kurze Erklärung.

Bruder-Baum 1 Bruder-Baum 2
AVL Baum 1 AVL Baum 2

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 2: AVL-Bäume

AVL-Baum 1 AVL-Baum 2

 AVL Baum 1

Der Baum ist ein korrekter AVL-Baum.

AVL Baum 2 

Der AVL-Baum ist inkorrekt. Der Knoten F hat Höhe 3. Die Knoten M,N haben die Höhe 5. Bei AVL Bäumen ist nur ein Höhenunterschied von +/-1 erlaubt.

 

javafrage Fri, 02/10/2012 - 10:41

4 Erweitern eines AVL-Baums

4 Erweitern eines AVL-Baums

Der unten gezeigte Baum ist ein streng aufsteigend, sortierter Binärbaum und gleichzeitig ein AVL-Baum. Die Schlüssel in den Knoten sind ganze, positive Zahlen.
Fügen Sie 6 Knoten in das Diagramm ein.

  • Wählen Sie die Knotenpositionen so, dass der Baum ein AVL-Baum bleibt.
  • Tragen Sie dann die Schlüsselwerte so ein, dass der Baum streng sortiert bleibt.

AVL-Baum für Übungsaufgabe

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 3: Bruderbäume

Brudebaum 1 Bruderbaum 2

AVL Baum 1

Der Baum ist ein korrekter Bruderbaum

AVL Baum 2

Der Baum ist kein korrekter Bruderbaum.

Die Knoten L und M haben eine andere Höhe.

javafrage Sat, 01/05/2013 - 14:15

Anonymous (not verified)

Tue, 06/23/2020 - 18:57

Hallo, der rechte Baum wäre doch auch kein Bruderbaum wenn er zwar höhenbalanciert wäre aber nicht alle Söhne die gleiche Höhe hätten. Also der entscheidende Punkt ist ja nicht die Ausgeglichenheit sondern die Höhe der Söhne, oder?
Beste Grüße

5 Definition von Brüdern (bei Brüderbäumen)

5 Definition von Brüdern (bei Brüderbäumen)

Was sind Brüder im Kontext von Brüderbäumen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 4: Erweitern eines AVL-Baums

Eine mögliche Lösung

 Lösung zur Übungsaufgabe zur Erweiterung eins AVL-Baums

javafrage Sat, 01/05/2013 - 14:30

6 Binär- und Bruderbäume

6 Binär- und Bruderbäume

Wann ist ein Binärbaum ein Bruderbaum? Nennen Sie die Kriterien.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 5: Definition Bruder (bei Bruderbäumen)

Knoten die den gleichen Vater besitzen.

javafrage Sat, 01/05/2013 - 14:41

7 Aufwände von Operationen in Listen, Warteschlangen und Bäumen

7 Aufwände von Operationen in Listen, Warteschlangen und Bäumen

Welche Aufwände O(n) haben die folgenden Operationen bei nicht optimierten Implementierungen?

  • Einfügen eines Elements am Kopf einer Liste
  • Suchen eines Elements in einer Liste
  • Finden eines Elements in einem balancierten Baum
  • Finden eines Elements in einem Feld(Array) bei bekanntem Index
  • Finden eines Elements in einem Feld(Array) wenn der Zugriffsindex nicht bekannt ist

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Antwort zu Frage 6: Binär- und Bruderbäume

  • Jeder innere Knoten hat einen oder zwei Söhne
  • Jeder unäre Knoten hat einen binären Bruderknoten
  • Alle Söhne haben die gleiche Tiefe
javafrage Tue, 03/18/2014 - 08:36

Anonymous (not verified)

Sat, 05/20/2017 - 13:08

Vielen Dank für die Javafragen!
Sollte der letzte Stichpunkt der Antwort zu Frage 6 und 8 nicht heißen:
- Alle Blattknoten haben die gleiche Tiefe
Bei Fragen 8 und 9 ist mir außerdem aufgefallen, dass die Kommentarfunktion deaktiviert ist.

habe die Kommentarfunktion wieder eingeschaltet. Das gab es mal böse Robots...
Zu den Söhnen. Das passt schon. Jeder Vater hat Söhne mit der gleichen Tiefe. Es können nicht alle Blattknoten im Baum die gleiche Höhe haben. Ein Vater ist immer um eins höher als sein Sohn.

8 Definition Bruderbaum

8 Definition Bruderbaum

Welche drei Bedingungen gelten für einen Bruderbaum?

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 7: Aufwände von Operationen in Listen, Warteschlangen und Bäumen

  • Einfügen eines Elements am Kopf einer Liste: O(1)
  • Suchen eines Elements in einer Liste: O(n)
  • Finden eines Elements in einem balancierten Baum: O(logN)
  • Finden eines Elements in einem Feld(Array) bei bekanntem Index: O(1)
  • Finden eines Elements in einem Feld(Array) wenn der Zugriffsindex nicht bekannt ist: O(n)
javafrage Tue, 03/18/2014 - 08:47

9 Anforderungen an einen AVL-Baum

9 Anforderungen an einen AVL-Baum

Was gilt für alle Teilbäume eines AVL-Baums?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Definition Bruderbaum

  1. Jeder innere Knoten hat einen oder zwei Söhne
  2. Jeder unäre Knoten hat einen binären Bruderknoten
  3. Alle Söhne eines Vaters haben die gleiche Tiefe
javafrage Tue, 03/18/2014 - 08:57

Anonymous (not verified)

Tue, 06/27/2017 - 11:22

Es sollte bei 3. m.E. heißen: Alle Blätter haben die gleiche Tiefe.
Denn, auch innere Knoten sind Söhne, haben jedoch unterschiedliche Tiefen.

Eine etwaige Änderung müsste auch im Artikel "Bruderbäume" übernommen werden.

10 Bruderbaum korrigieren

10 Bruderbaum korrigieren
Inkorrekter Bruderbaum

Der Baum links, ist mit seinen äusseren Blattknoten (Werte 1 bis 6) streng aufsteigend sortiert.

Warum ist dieser Baum kein Bruderbaum? Geben Sie eine kurze Erklärung.

Zeichnen Sie rechts einen Baum, der ein streng aufsteigend sortierter Bruderbaum ist.

Er soll die gleichen 6 äusseren Blattknoten (Wert 1 bis 6) besitzen.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 9: Anforderungen an einen AVL-Baum

Die Höhe des linken Unterbaums unterscheidet sich um maximal 1 von der Höhe des rechten Unterbaums.

javafrage Sat, 02/13/2016 - 17:10

11 Höhenbalancierter Binärbaum

11 Höhenbalancierter Binärbaum
Nicht höhenbalancierter Binärbaum Der links gezeigte Binärbaum ist streng aufsteigend sortiert. Er ist nicht höhenbalanciert.
Transformieren Sie die Knoten dieses Baums so, dass ein höhenbalancierter, streng sortierter Binärbaum der entsteht.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Antwort zu Frage 10: Bruderbaum korrigieren

Aufgabe Lösung
 Inkorrekter Bruderbaum Korrekter Bruderbaum 
javafrage Sat, 02/13/2016 - 17:23

12 AVL Baum: Fehler erkennen und korrigieren

12 AVL Baum: Fehler erkennen und korrigieren
Inkorrekter AVL Baum Der links gezeigte streng sortierte Binärbaum ist kein AVL Baum. Warum ist er kein AVL Baum? Geben Sie eine kurze Begründung:

Zeichnen Sie rechts die gleichen Knoten als einen streng aufsteigend, sortierten AVL-Baum ein:

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+4 Minuten

Antwort zu Frage 11: Höhenbalancierter Binärtbaum

Aufgabe Lösung
 Nicht höhenbalancierter Binärbaum Höhenbalancierter Binärbaum 

 

javafrage Sat, 02/13/2016 - 17:47

13 Warteschlangen

13 Warteschlangen

Die „einfache“ Warteschlange wird in echten Implementierungen eher selten eingesetzt. Nennen Sie den wichtigsten Nachteil einer „einfachen“ Warteschlange. Welcher Warteschlangentyp wird in realen Implementierungen eher eingesetzt. Nennen Sie den Fachbegriff. Was ist der Vorteil dieses Warteschlangentyps?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 12: AVL Baum: Fehler erkennen und korrigieren

Knoten „80“ hat keinen Unterbaum (Höhe 1). Der Unterbaum von „40“ rechts hat die Höhe 3. Die Unterbäume dürfen sich in der Höhe nur um 1 unterscheiden.

Aufgabe Lösung
Inkorrekter AVL Baum Korrekter AVL Baum
javafrage Sat, 02/13/2016 - 18:13

Anonymous (not verified)

Sun, 06/19/2016 - 17:46

Könnte man nicht auch einfach die 60 links unter die 80 schreiben? Dann müsste man nicht den ganzen Baum ändern

14 Streng sortierte Binärbäume

14 Streng sortierte Binärbäume

Nennen Sie drei Eigenschaften die für jeden inneren Knoten eines streng
aufsteigend sortierten Binärbaums gelten.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 13: Warteschlangen

Einfache Warteschlangen können beliebig groß werden falls ein Prozessor, der die Warteschlange bedient ausfällt. Dieser Ausfalls des Prozessors der die Warteschlange abarbeitet und Elemente löscht wird dann zu einem Hauptspeicheproblem führen. Das Hauptspeicherproblem kann dann die gesamte Anwendung stoppen.

Die Lösung:

Ringsspeicher auch Ringpuffer genannt.

Sie haben einen konstanten Speicherverbrauch.

javafrage Sat, 03/25/2017 - 17:21

15 Maximaler Aufwand für Binärbaum

15 Maximaler Aufwand für Binärbaum
Der streng sortierte Binärbaum (rechts) gewährleistet einen Zugriff auf alle Knoten mit einem minimalen Aufwand. Zeichnen Sie rechts daneben einen streng sortierten Binärbaum mit den gleichen Werten der den höchstmöglichen (schlechtesten) Aufwand für den Zugriff auf alle Knoten besitzt Binärbaum

Die Antwort finden Sie unten auf dieser Seite.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 14: Streng sortierte Binärbäume

  1. Jeder Knoten hat einen oder zwei Söhne
  2. Jeder linke Sohn ist kleiner als der Vater
  3. Jeder rechte Sohn ist größer als der Vater

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 15: Maximaler Aufwand für Binärbaum

Ein Baum der zu einer Liste degeniert ist hat den schlechtesten Aufwand O(n).

Anbei ein Beispiel:

Degenerierter Binärbaum

javafrage Sat, 03/25/2017 - 17:31

Fragen zu Ein- und Ausgaben (Streams)

Fragen zu Ein- und Ausgaben (Streams) javafrage Sat, 08/17/2019 - 10:04

1. Java-Streams

1. Java-Streams

Was verbindet ein Java-Stream?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten
javafrage Sat, 08/17/2019 - 10:07

2. Schreiben von Basistypen

2. Schreiben von Basistypen

Mit welcher Klasse kann ich Typen wie Character, Byte, Long oder Float schreiben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Java-Streams

Eine Datenquelle mit einem Datenziel

javafrage Sat, 08/17/2019 - 10:12

3. Die Klasse ObjectOutputStream

3. Die Klasse ObjectOutputStream

Was kann man mit der Klasse ObjectOutputStream schreiben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 2: Schreiben von Basis-Typen

DataOutputStream

javafrage Sat, 08/17/2019 - 10:16

4. Serialisierung in Java

4. Serialisierung in Java

Welchen Nachteil hat die Serialisierung in Java?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 3: Die Klasse ObjectOutputStream

Alle Klassen die die Schnittstelle Serializable implementieren.

javafrage Sat, 08/17/2019 - 10:20

5. Erstmal nur eine Antwort...

5. Erstmal nur eine Antwort...

Das war's erstmal...

Antwort zu Frage 4: Serialisierung in Java

Sie kann nur bestimmte Klassen einlesen. Ändern sich die Klassen, können sie nicht mehr eingelesen werden.

javafrage Sat, 08/17/2019 - 10:21