Thread: ArrayList probleem
-
22-03-2012, 12:13 #1
ArrayList probleem
Dag iedereen,
Ik zit vast bij de methode verwijderItem in een arrayList.
--> Probleem is dat deze methode niet correct werkt. Kan iemand deze code optimaliseren?Code:public void verwijderItem(int index)throws IndexOutOfBoundsException { if(index < 0 || index > mijnPersonenLijst.size()) { throw new IndexOutOfBoundsException("Er is een verkeerde index lengte meegegeven! Voor een correct lengte in!"); }else { for(int i = 0; i<mijnPersonenLijst.size();i++) { if(mijnPersonenLijst.get(i) != null ) { mijnPersonenLijst.remove(index); } } } }
Alvast bedankt!Last edited by Fraggie; 22-03-2012 at 18:46. Reason: Formatting
no votes
-
-
22-03-2012, 12:34 #2Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
vrij nutteloze methode als je het mij vraagt ma soit :P
Code:public void verwijderItem(int index) throws IndexOutOfBoundsException { try { mijnPersonenLijst.remove(index); } catch (IndexOutOfBoundsException e) { throw new IndexOutOfBoundsException( "Er is een verkeerde index lengte meegegeven! Voor een correct lengte in!"); } }there you gono votes
-
22-03-2012, 13:13 #3Member
- Registered
- 17/07/02
- Location
- Wilrijk
- Posts
- 1,994
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 9/16
Het probleem is 2-delig--> Probleem is dat deze methode niet correct werkt.
1) Deze methode HEEFT GEEN ENKEL NUT, GEEN NUT = BROL
2) Stop met die nederlandse codeno votes
-
22-03-2012, 14:31 #4
Dank u voor de reacties!
Nu werkt het wel. En sorry voor de misschien "onnuttige code" we moeten dit doen voor school om het arrayList gebeuren onder de knie te krijgen..
Nog kleine vraagjes: bij je catch staat : IndexOutOfBoundsException e
Waarvoor dient die "e"
Thanks!no votes
-
22-03-2012, 14:38 #5Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
die "e" is de referentie naar de exceptie die gegooid wordt, op die manier kunt ge dingen als
binnen de catch doen. Maar tbh u methode is echt nutteloos, ge kunt evengoed rechtstreeks de methode "remove" oproepen ipv deze nog eens in een andere methode te omwikkelen.Code:System.out.println(e.getMessage()); e.printStackTrace();
there you gono votes
-
22-03-2012, 15:25 #6Member
- Registered
- 18/07/03
- Location
- Limburg
- Posts
- 3,733
- iTrader
- 27 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/13
Ziet ge in hoe uw eerder geschreven for-lus op nix slaat? Da lijkt mij belangrijker dan nu tevreden te zijn met "het werkt" - leer uit uw fouten!
no votes
-
22-03-2012, 15:29 #7
Okéé thanks, Ik heb volgende week hier een test van.
We moeten 4 dingen kunnen toevoegen, verwijderen, opzoeken, vervangen en dit bij ArrayList en LinkedList.
Soms nog wat tips ? Maar normaal gezien als je de verschillende methoden kunt schrijven moet dit wel gaan zeker
.
Toch al bedankt voor de hulp !no votes
-
22-03-2012, 15:31 #8Member
- Registered
- 25/07/02
- Location
- Brussel
- Posts
- 1,001
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Op welke school zit ge?
no votes
-
22-03-2012, 16:24 #9Member
- Registered
- 08/09/02
- Location
- -
- Posts
- 2,044
- iTrader
- 9 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/6
Nen tip bij lists; verwijder geen items terwijl ge erover loopt met bvb een shorthand for loop want dan krijgde exceptions. Gebruik hiervoor Iterators
no votes
-
22-03-2012, 17:04 #10
oke !
Tot nu toe ben ik met alle methodes mee maar ik blijf wat vast zitten bij de contains methode. Zou iemand eventueel kort kunnen uitleggen hoe je dit simpel doet?
Op de java API staat dat het moet met: public boolean contains(Object elem)
Ik heb dit tot nu toe al gemaakt maar ik heb de ingebouwde contains niet gebruik dus is dit zoiso fout. :
Het kan zijn dat er domme fouten in staan maar ik ben dan ook een eerste jaars studentCode:public boolean contains (Persoon element) throws IllegalArgumentException { boolean found = false; if( element == null) { throw new IllegalArgumentException(); } for(int i =0; i<mijnPersonenLijst.size();i++) { if(mijnPersonenLijst.get(i).equals(element)) { found = true; } } return found; }
.
Last edited by Fraggie; 22-03-2012 at 18:48. Reason: formatting
no votes
-
22-03-2012, 17:41 #11Approved 9liver
- Registered
- 21/08/02
- Location
- Roeselare
- Posts
- 4,474
- iTrader
- 15 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/35
een index is geen lengteEr is een verkeerde index lengte meegegeven
ik wou ook een bijdrage leveren aan de thread
no votes
-
22-03-2012, 18:05 #12Member
- Registered
- 18/09/09
- Location
- Edegem
- Posts
- 4
- iTrader
- 0
- Mentioned
- 0 Post(s)
Moet je zelf het werken van een arraylist nabouwen of mag je de java implementatie gebruiken? Deze bevat al de methodes die je zoekt en zouden je veel tijd besparen.
Code:Person ikke = new Person("ikke"); List<Person> personsList = new ArrayList<Person>(); personsList.add(ikke); personsList.contains(ikke); // true personsList.remove(ikke); personsList.contains(ikke); // falseno votes
-
22-03-2012, 18:38 #13
We mogen de java implementatie gebruiken maar moesten eerst elke implementatie nabouwen.
Maar ik snap eigenlijk niet goed hoe die contains checkt of het "element" overeenkomt of niet?no votes
-
22-03-2012, 18:49 #14Member
- Registered
- 18/09/09
- Location
- Edegem
- Posts
- 4
- iTrader
- 0
- Mentioned
- 0 Post(s)
De contains methode van een ArrayList gaat alle elementen checken via de "boolean equals(Object o)" methode. Dat is een methode die elk object heeft en standaard het adres in het geheugen zal vergelijken om te kijken of 2 objecten gelijk zijn. Het is echter veelal aangewezen deze te overriden, maar ik denk niet dat dat tot de oefening hoort.
De java Arraylist werkt achterliggend met een gewone array met een default grootte, je kan met de constructor wel een andere startgrootte meegeven als je al ongeveer weet hoe groot je list zal worden.
Code:Person[] persons = new Person[10]; // Default size public boolean contains(Person inP){ for(Person p : persons){ if(p.equals(inP)){ return true; } } return false; }no votes
-
22-03-2012, 19:31 #15
Ok ik snap het al wat beter maar hoe moet ik het dan aanpakken als ik met de java implementatie "Contains" wil werken? Dus niet het nabootsen. Sorry maar da blijft me wat onduidelijk
no votes
