[informatica] Datastructuur in java
Moderators: ArcherBarry, Fuzzwood
-
- Berichten: 93
Datastructuur in java
Beste,
Ik heb een reeks objecten van een bepaalde klasse en wil dat deze automatisch gerangschikt worden volgens een bepaalde eigenschap van die klasse. Welke datastructuur (List, Set, ...) gebruik je dan het best?
Bijvoorbeeld:
er is een hele reeks van de klasse 'Collision'.
collisionBetweenShip1AndShip2 ,collisionBetweenShip1AndBullet1,...
in welke datastructuur moeten deze referenties naar objecten zodat ze automatisch gerangschikt worden volgens de eigenschap getTimeToCollision() van een Collision.
Dank bij voorbaat,
Upsilon.
Ik heb een reeks objecten van een bepaalde klasse en wil dat deze automatisch gerangschikt worden volgens een bepaalde eigenschap van die klasse. Welke datastructuur (List, Set, ...) gebruik je dan het best?
Bijvoorbeeld:
er is een hele reeks van de klasse 'Collision'.
collisionBetweenShip1AndShip2 ,collisionBetweenShip1AndBullet1,...
in welke datastructuur moeten deze referenties naar objecten zodat ze automatisch gerangschikt worden volgens de eigenschap getTimeToCollision() van een Collision.
Dank bij voorbaat,
Upsilon.
BABBAGE
- Berichten: 2.609
Re: Datastructuur in java
De datastructuur maakt op zich niet veel uit, maar je moet meegeven hoe 2 instances van je klasse vergeleken kunnen worden.
Hier worden 2 manieren beschreven
Hier worden 2 manieren beschreven
-
- Berichten: 93
Re: Datastructuur in java
Ik geraakte niet echt uit aan het voorbeeld dat je daar gaf. Zelf vond ik:
http://orangepalanti...ex.php?idnum=63
Dit is ongeveer wat ik wil doen. Het enige probleem is dat als twee Collisions toevallig dezelfde getTimeToCollision() hebben dan wordt er één verwijderd. Dat mag niet. (Naar analogie met het voorbeeld 'otherTwo' wordt verwijderd omdat het dezelfde compare waarde heeft als 'two')
Hoe kan dit euvel verholpen worden?
edit: nog even vermelden getTimeToCollision() is van het type double, is dit een probleem?
http://orangepalanti...ex.php?idnum=63
Dit is ongeveer wat ik wil doen. Het enige probleem is dat als twee Collisions toevallig dezelfde getTimeToCollision() hebben dan wordt er één verwijderd. Dat mag niet. (Naar analogie met het voorbeeld 'otherTwo' wordt verwijderd omdat het dezelfde compare waarde heeft als 'two')
Hoe kan dit euvel verholpen worden?
edit: nog even vermelden getTimeToCollision() is van het type double, is dit een probleem?
BABBAGE
- Berichten: 2.609
Re: Datastructuur in java
Ik denk dat objecten met een gelijke CollisionTime niet verwijderd zullen worden als je een List gebruikt. Misschien dat jij met een Set werkte?
Laten we voor de methode kiezen waarbij je jouw objecten 'vergelijkbaar' maakt.
In de definitie van je klasse moet je dan zeggen dat ze de Comparable interface implementeert.
Voor jouw dan iets in de aard van:
Daarna implementeer je in die klasse de compareTo() methode:
Als je nu een List van Collisions maakt, dan zou je hem moeten kunnen sorteren.
Laten we voor de methode kiezen waarbij je jouw objecten 'vergelijkbaar' maakt.
In de definitie van je klasse moet je dan zeggen dat ze de Comparable interface implementeert.
Voor jouw dan iets in de aard van:
Code: Selecteer alles
public class Collision implements Comparable<Collision>{
Code: Selecteer alles
public int compareTo(Collision o) {
return this.getTimeToCollision() - o.getTimeToCollision() ;
}
-
- Berichten: 93
Re: Datastructuur in java
awel ja, maar dat voorstel werkt niet omdat getTimeToCollision() een double is ? (Althans als ik dat probeer ... )
BABBAGE
- Berichten: 2.609
Re: Datastructuur in java
Ah dat zou kunnen, ik vermoed dat je in Java altijd moet typecasten? Je wil een int returnen vanuit een double, dus moet je er (int) voorzetten. Schrijf het misschien voor de veiligheid uit in onderstaande vorm:
Code: Selecteer alles
if( 1 < 2 )
return -1;
else
if( 1 > 2 )
return 1;
else
return 0;