vendredi 8 mai 2015

Generischer Iterator

Hallo zusammen,

nach ein paar Stunden die ich jetzt hier schon sitze! wende ich mich mal ans Forum.

Wir müssen zu zwei Klassen, die wir bereits für die letzte Aufgabe abgeben mussten, Iterable implementieren und zwar mit einer Inneren Klasse.

Dazu soll die Next() Methode eine NoSuchElementException werfen
Remove muss nicht implementiert aber bereitgesstellt werden, mit einer UnsupportedOperationException.


Mein Code bis jetzt

Klasse1
Java Code:

  1.  
  2. package augabenblatt5.Aufg1;
  3.  
  4. import java.util.Iterator;
  5. import java.util.NoSuchElementException;
  6.  
  7. /**
  8.  *
  9.  * @author Alex
  10.  */
  11. public class Feld<T> {
  12. private T[] feld;
  13.  
  14. public Feld(int size) {
  15. @SuppressWarnings("unchecked")
  16. T[] f = (T[])new Object[size];
  17. feld = f;
  18. }
  19.  
  20. public class Iterator<T> implements java.util.Iterator<T> {
  21. int pos = 0;
  22.  
  23. @SuppressWarnings({ "unchecked", "rawtypes" })
  24. Feld paar;
  25.  
  26.  
  27.  
  28. public boolean hasNext() {
  29. return this.pos < paar.size();
  30. }
  31.  
  32. @SuppressWarnings("unchecked")
  33. public T next() throws NoSuchElementException {
  34. if (hasNext()) {
  35. return (T) paar.get(this.pos++);
  36. } else {
  37. }
  38. }
  39.  
  40. public void remove() {
  41. }
  42. }
  43.  
  44. public Iterator<T> iterator() {
  45. return new Iterator<T>();
  46. }
  47.  
  48. public int size() {
  49. return feld.length;
  50. }
  51.  
  52. public T get(int i) {
  53. return feld[i];
  54. }
  55.  
  56. public T set(int i, T e) {
  57. T result = feld[i];
  58. feld[i] = e;
  59. return result;
  60. }
  61. }


Klasse 2
Java Code:

  1.  
  2. package augabenblatt5.Aufg1;
  3.  
  4. import java.util.Iterator;
  5. import java.util.NoSuchElementException;
  6.  
  7. /**
  8.  *
  9.  * @author Alex
  10.  */
  11. public class Paar <T> {
  12.  
  13. private T first;
  14. private T second;
  15.  
  16. public Paar (T first, T second){
  17.  
  18. this.first = first;
  19. this.second = second;
  20.  
  21.  
  22.  
  23.  
  24. }
  25.  
  26. public T first(){
  27. return this.first;
  28. }
  29.  
  30. public T second()
  31. {
  32. return this.second;
  33. }
  34.  
  35.  
  36. public void swap(){
  37. T third;
  38.  
  39. third = this.second;
  40. this.second = this.first;
  41. this.first = third;
  42.  
  43. }
  44.  
  45.  
  46. public String toSring(){
  47.  
  48. return "("+this.first+","+this.second+")";
  49. }
  50.  
  51.  
  52.  
  53. }


Klasse 3
Java Code:

  1.  
  2. package augabenblatt5.Aufg1;
  3.  
  4. import java.util.NoSuchElementException;
  5.  
  6. /**
  7.  *
  8.  * @author Alex
  9.  */
  10. public class PaarFeld4 <T>{
  11.  
  12. private Feld <T> first,second;
  13. private int length;
  14.  
  15. public PaarFeld4(Feld<T> first,Feld <T> second){
  16.  
  17. this.length = (first.size() < second.size() ? first.size() : second.size());
  18. this.first = first;
  19. this.second = second;
  20. }
  21.  
  22. public class Iterator implements java.util.Iterator<Paar<T>> {
  23. int pos = 0;
  24.  
  25.  
  26. @SuppressWarnings({ "unchecked", "rawtypes" })
  27. PaarFeld4 paar = new PaarFeld4(first, second);
  28.  
  29. @Override
  30. public boolean hasNext() {
  31. return this.pos < paar.size();
  32. }
  33.  
  34. @Override
  35. public Paar<T> next() {
  36. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  37. }
  38.  
  39. @Override
  40. public void remove() {
  41. }
  42.  
  43.  
  44. }
  45.  
  46. public Iterator iterator() {
  47. return new Iterator();
  48. }
  49. public int size(){
  50. return this.length;
  51. }
  52.  
  53.  
  54.  
  55.  
  56. public Paar<T> set(int i, Paar<T> paar){
  57. Paar <T> old = new Paar <T>(first.get(i),second.get(i));
  58.  
  59. this.first.set(i,paar.first());
  60. this.second.set(i,paar.second());
  61. return old;
  62. }
  63.  
  64. public PaarFeld4<T> get(){
  65. // hier komm ich nicht weiter !!!!
  66. // wie kann ich mir ein PaarFeld ausgeben lassen?
  67.  
  68. return ;
  69. }
  70.  
  71.  
  72. }



Ich möchte eigentlich keine Lösung sondern ne Hilfe wie ich hier weiter machen könnte.

Ich verstehe paar Sachen nicht, mit Next() bekomm ich ja das nächste Objekt, Ich könnte mir das Objekt mit get holen aber wie bekomm ich die Getter Methode geschrieben.

Ich hab einfach total das Brett vor dem Kopf!

vielen Dank schon einmal für die Hilfe


Generischer Iterator

0 commentaires:

Enregistrer un commentaire