Announcement

Collapse
No announcement yet.

[Listen/Iteration] - Wie genau umsetzen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Listen/Iteration] - Wie genau umsetzen?

    hey ho,

    ich les hier seit längerem als stiller Beobachter mit und dadurch haben sich viele Fragen auch von alleine geklärt. Jetzt aber steh ich iwie vor einem unlösbaren Problem.

    Gegeben ist eine Java-Klasse, die eine Liste mit Strings enthält mit der einige Dinge angestellt werden sollen. Z.B. diese Liste als String ausgeben (hab ich schon, juhu ) oder Teillisten davon erzeugen, sprich man übergeht einen Integer Wert und dann wird die Liste von 0-i oder von i-Ende ausgegeben.

    Daran verzweifel ich jetzt schon seit heute Morgen und komm iwie nicht zu potte. Das das ganze auch noch rekursiv gelöst werden soll, häng ich jetzt erstmal hinten an,hauptsache ich krieg mal iwas zusammen, Feinschliff kommt dann später =(.

    Wenn ich dazu google find ich meistens nur, wie man Listen erzeugt und wieder ausgibt. Speziell für Teillisten gibt es ja die Funktion subList, aber die müssen wir ja selbst schreiben (was der Sinn von solchen Aufgaben sein soll, sei mal dahingestellt...) Genauso wie das paarweise vergleichen von 2 Listen, die equals-Methode..aber nun gut...

    Wie krieg ich das jetzt hin, dass mittels Iterator eine Liste durchgegangen wird bis zu dem Index-Wert, wo er hinsoll?

    Code:
    L<A> take(int i)
    {
    StringBuffer str2 = new StringBuffer();
    str2.append('[');
    Iterator<A> iter = iterator();
     while(iter.hasNext() && z<=i)
     {
       str2.append(iter.next()+",");
       z++;
      }
    str2.append(']');
    return str2.toString();
    damit klappts schonmal nicht, allein weil kein String sondern eine Liste zurückgegeben werden soll.

    Ich hab hier so zwei Javabücher (..als erste Programmiersprache) und das openBook halb durchgeackert für Listen etc., aber iwie bin ich jetzt genauso blöd wie vorher.. -.- zumal das Thema nur sehr stiefmütterlich behandelt wird, ausser so dem absolut nötigsten erfährt man da nicht. also falls jemand nen Link hat, der wirklich hilft, als her damit...

  • #2
    Hab Deine Frage zuerst nicht richtig gelesen. Ich lass das trotzdem mal stehen und komm gleich nochmal wieder
    Hallo, hier mal ne Beispielklasse. Habe versucht, möglichst wenig Code zu schreiben, um das Wesentliche zu zeigen (also keine Fehlerbehandlung und ListBeispiel alles static).
    Code:
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class ListBeispiel {
    	
    	public static void main(String[] args) {
    		// so kriegt man eine implementierung für eine Liste, hier ArrayList für
    		// weitere Implementierungen siehe javadoc von List
    		List<String> newList = new ArrayList<String>();
    		
    		// so macht man eine Liste aus einem Array
    		String[] stringArr = {"str1", "str2", "str3", "str4"};
    		List<String> listFromArray = Arrays.asList(stringArr);
    		
    		System.out.println("Ganze Liste ausgegeben:");
    		iterate(listFromArray);
    		
    		System.out.println("Subliste ausgegeben:");
    		iterate(listFromArray.subList(1, 3));
    		
    		System.out.println("Liste als ein String ausgeben:");
    		System.out.println(iterateAndConcatonate(listFromArray));
    		
    	}
    	
    	public static void iterate(final List<String> liste) {
    		for (String item : liste) {
    			System.out.println(item);
    		}
    	}
    	
    	public static String iterateAndConcatonate(final List<String> liste) {
    		StringBuilder builder = new StringBuilder();
    		for(String item : liste) {
    			builder.append("[").append(item).append("]");
    		}
    		return builder.toString();
    	}
    }
    Zuletzt editiert von ngomo; 25.05.2009, 15:36. Reason: Frage nicht richtig gelesen
    http://www.winfonet.eu

    Comment


    • #3
      Hallo nochmal ich. Also ich verstehe Deine Aufgabe so, Ihr sollt eine Art subList()-Methode implementieren, düft dafür aber keine Listenfunktionen benutzen, sondern müsst irgendwie mit Iterationen arbeiten. Da kann ich Dir folgendes anbieten:
      Code:
      public class ListBeispiel<T> {
      
      	public static void main(String[] args) {
      		ListBeispiel<String> bsp = new ListBeispiel<String>();
      		String[] strArr = {"str1", "str2", "str3", "str4", "str5"};
      		List<String> strList =  Arrays.asList(strArr);
      		
      		List<String> abList = bsp.elementeAbParameterBisEnde(strList, 1);
      		System.out.println(abList);
      		
      		List<String> bisList = bsp.elementeVonAnfangBisParameter(strList, 1);
      		System.out.println(bisList);
      		
      	}
      	
      	public List<T> elementeAbParameterBisEnde(final List<T> list, final int ab) {
      		//	Generic Arrays gehen nicht, deswegen Object[]
      		final Object[] arr = new Object[list.size()-ab];
      		for (int i = 0 ; i< list.size()-ab; i++) {
      			arr[i] = list.get(i+ab);
      		}
      		@SuppressWarnings("unchecked")
      		List<T> retval =  (List<T>) Arrays.asList(arr);
      		return retval;
      	}
      	
      	public List<T> elementeVonAnfangBisParameter(final List<T> list, final int bis) {
      		//	Generic Arrays gehen nicht, deswegen Object[]
      		final Object[] arr = new Object[bis+1];
      		for (int i = 0 ; i<= bis; i++) {
      			arr[i] = list.get(i);
      		}
      		@SuppressWarnings("unchecked")
      		List<T> retval =  (List<T>) Arrays.asList(arr);
      		return retval;
      	}
      }
      http://www.winfonet.eu

      Comment

      Working...
      X