-
10-03-2009, 13:10 #16Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
no votes
-
-
10-03-2009, 13:13 #17Member
- Registered
- 31/07/02
- Location
- Kontich
- Posts
- 602
- iTrader
- 16 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
When you're slapped, you'll take it and like it - Sam Spade
Make way for the bad guy! - Tony Montana
When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
no votes
-
10-03-2009, 13:16 #18Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
no votes
-
10-03-2009, 13:43 #19Member
- Registered
- 03/08/02
- Location
- Gavere
- Posts
- 37,519
- iTrader
- 23 (100%)
- Mentioned
- 57 Post(s)
- Reputation
- 0/1281
Dan nog... contains anyone?
ArrayList (Java Platform SE 6) )
Deze wordt trouwens gedeclareerd in de Collections interface.no votes
-
10-03-2009, 14:24 #20Member
- Registered
- 31/07/02
- Location
- Kontich
- Posts
- 602
- iTrader
- 16 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Je bedoelt zoals in LinkedHashSet (Java 2 Platform SE v1.4.2) ?
When you're slapped, you'll take it and like it - Sam Spade
Make way for the bad guy! - Tony Montana
When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
no votes
-
10-03-2009, 15:09 #21Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
no votes
-
10-03-2009, 15:14 #22Member
- Registered
- 31/07/02
- Location
- Kontich
- Posts
- 602
- iTrader
- 16 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
When you're slapped, you'll take it and like it - Sam Spade
Make way for the bad guy! - Tony Montana
When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
no votes
-
10-03-2009, 19:54 #23Member
- Registered
- 03/11/03
- Location
- Hove
- Posts
- 6,718
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/3
no votes
-
10-03-2009, 20:36 #24Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Jij springt zomaar ergens halfweg uit je for lus. Een for lus dient er voor om x keer dezelfde code te herhalen en in beide code wordt de for lus vroegtijdig afgebroken als een item reeds bestaat. De TS doet zich wel nog de moeite om alle voorwaarden duidelijk in de forlus te houden, jij gebruikt gewoon een lompe return in je for lus. Qua leesbaarheid is dat echt 0.
In dit geval zou de code van de TS goed geweest zijn had hij zich de moeite genomen om een while lus te schrijven.
(het gaat hier dus vooral over hoe leesbaar en duidelijk programmeert, ik heb me niet uitgesproken over de efficiëntie van de gegeven code)“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
10-03-2009, 22:37 #25Member
- Registered
- 03/08/02
- Location
- Gavere
- Posts
- 37,519
- iTrader
- 23 (100%)
- Mentioned
- 57 Post(s)
- Reputation
- 0/1281
Nu kunnen er wel bepaalde redenen zijn om een Linked-variant van een collection te vermijden, zoals performance. Maar het lijkt me straf dat dat hier al een issue zou zijn, dus ik geef je wel hard gelijk

Met een linkedhashset wordt het blok code dan gewoon:
Indien de eigenaar al bestond returned dit gewoon false, anders add hij en returned het true.Code:return eigenaars.add(eigenaar);
Natuurlijk wel voor een deftige equals() en hashCode() override zorgen in Eigenaar.no votes
-
11-03-2009, 14:18 #26Member
- Registered
- 20/09/04
- Location
- Kortrijk / Gent
- Posts
- 7,177
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/43
Hier ga ik niet mee akkoord.
Je hebt een teller nodig, je moet deze per loop incrementeren en je moet in het slechtste geval de volledige collectie doorlopen.
Waarom zou je dan geen for lus mogen gebruiken?
Of je dat doet met een boolean variabele of door direct uit de lus te springen is een voorkeur.
Ik vind die code niet slecht (los van de collectie keuze).
De redenering dat je verplicht een while lus moet gebruiken wanneer er vroegtijdig uit de lus kan gesprongen worden vind ik belachelijk.no votes
-
11-03-2009, 15:10 #27
Zoals Cycloon zei, dat is noodzakelijk als je leesbare code wil maken.
Als ik code lees en ik zie een for-lus staan, dan bekijk ik de voorwaarden en hoeveel keer de lus doorlopen wordt. Hetgeen in de lus uitgevoerd wordt, staat los van die voorwaarden.
Als er dan in die for-lus opeens abrupt gestopt wordt, kan mijn beeld van hoe het programma/stuk code werkt niet kloppen.no votes
-
11-03-2009, 15:24 #28Member
- Registered
- 20/09/04
- Location
- Kortrijk / Gent
- Posts
- 7,177
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/43
En sinds wanneer kun je die extra voorwaarden (een hulpvariabele) niet in uw for lus zetten?
Dat is toch hetzelfde als bij een while lus ...
We zijn hier bezig over een loop die met behulp van een for lus in drie regels geschreven kan worden.
Als dat al niet meer leesbaar is, waar zijn we dan mee bezig?
We hebben het dus bijv. over
vsCode:for(int i = 0; i < collec.size(); i++) if(collec.equals("test")) return true; return false;
Het eerste vind ik persoonlijk zelfs veel duidelijker, aangezien je bij het tweede stuk nog moet nadenken over die hulpvariabele ...Code:int i=0; boolean temp = false; while( i < collec.size() && !temp){ if(collec.equals("test")) temp = true; i++; } return temp;
Nu, dat zijn persoonlijke voorkeuren.
Om daar dan een preek over te gaan geven
Last edited by MilM; 11-03-2009 at 15:36.
no votes
-
11-03-2009, 15:37 #29
Niet alle for- of while-lussen bestaan uit 3 regeltjes code.

En dat zouden geen persoonlijke voorkeuren moeten zijn, je kan alles wat je met een forlus kan doen ook met een whilelus doen, en vice versa. Het grote verschil is dat er gewoon een verschil in interpretatie is.
Zoals ik al zei, als je code overloopt (bv. een for-lus met enkele tientallen lijnen code, die methodes uit een andere klasse gaan gebruiken, etc.) moet je er van uit kunnen gaan dat die lus altijd x aantal keer zal uitgevoerd worden.
Laat dat de regel zijn, en een for met slechts 3 lijntjes de uitzondering.no votes
-
11-03-2009, 15:44 #30Member
- Registered
- 20/09/04
- Location
- Kortrijk / Gent
- Posts
- 7,177
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/43
In een lus van veel regels, kan een paar regels extra geen kwaad. Maar in een kleine lus vind ik dit net juist minder leesbaar. Dat het in grote blokken verwaarloosbaar is en daarmee beter, doet er niet toe.
Dit klinkt alsof je kleine blokken minder leesbaar gaat maken om een consistent gebruik van 'while' te hebben bij grotere blokken. Je kunt hier over de voor/nadelen discussiëren.
Welk stuk code vind jij hier het meest leesbaar?
Ik vind het dan ook overdreven om iemand hierop te pakken in dit voorbeeld.
while en for lus zijn exact hetzelfde. Net zoals ik in de while lus een boolean gebruik, zou ik daar ook een break of return kunnen gebruiken.
Ik zou ook ipv een return in de for lus, een extra boolean als voorwaarde hebben kunnen meegeven.
Als jullie bij een for lus ervan uitgaan, dat de size van een collectie de enige voorwaarde is en dan niet controleren op andere voorwaardes tussen de haakjes (zoals hieronder), dan ligt dit aan jullie eerder dan aan slecht programmeren van de auteur.
Ik geef u wel gelijk dat voor zeer grote blokken (waar je dan zelfs in een goeie IDE mss snel over 'return true' gaat lezen) het beter kan zijn om te werken met een conditie binnen de haakskes ipv een return of break statement.
For-lus versie:
edit: ik beweer niet dat een for lus daarom beter is, ik vind het gewoon wat ver gaan om te doen alsof dit zo slecht programmeren is ...Code:boolean temp = false; for(int i=0; i < collec.size() && !temp; i++){ if(collec.equals("test")) temp = true; } return temp;Last edited by MilM; 11-03-2009 at 16:03.
no votes

