Collections.sort

Status
Niet open voor verdere reacties.

MouNtant

Gebruiker
Lid geworden
2 jul 2011
Berichten
42
Hallo,

Ik heb nog een vraag ;) Ik wil gebruik maken van Collections.sort, maar deze methode wilt het nog niet helemaal doen. Hij geeft namelijk een error:

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<BKnoop<Letter>>). The inferred type BKnoop<Letter> is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
HuffMan.java /Java/src/iad1 line 21 Java Problem


Ik begrijp hier even niks van ik heb namelijk de klasse Letter die een character heeft en de frequentie ervan! Dit is inverband met het huffman algoritme maar dat doet er niet zo toe.

Code:
public class Letter implements Comparable<BKnoop<Letter>>
{
	private char character;
	private int frequentie;
	
	public Letter(char character, int frequentie)
	{
		this.character = character;
		this.frequentie = frequentie;
	}
	
	public int compareTo(BKnoop<Letter> ander) 
	{
		return (getFrequentie() < ander.get().getFrequentie() ? -1 : (getFrequentie()==ander.get().getFrequentie() ? 0 : 1));
	}

//Nog meer code niet zo interessant

Hier geeft hij geen errors maar is wel deel van het probleem denk ik...

In mijn klasse HuffMan heb ik een arraylist die er zo uit ziet:
private List<BKnoop<Letter>>letterLijst;

Deze maak ik aan en wil hem daarna sorteren..., maar dan geeft hij de error. Weet iemand wat ik fout doe?

Gr Mount
 
Ik ben geen Java kenner, maar moet BKnoop niet comparable zijn? Eventueel virtual, geïmplementeerd door <letter>. Mijn C++ gedachtengoed, dus mogelijk sla ik hier totaal mis
 
Oh omg ;) je hebt gelijk ik moet BKnoop Comparable maken niet letter, anders klopt er niks van ;)

Nu alleen nog de compare her schrijven en dan moet hij werken!

Echt SUPER SUPER bedankt!

even Voor de record, zo is het dus opgelost:

Code:
public class BKnoop<E> implements Comparable<BKnoop<Letter>>

en deze klasse moet dan de compareTo hebben!

gr Mount!

PS
was vergeten de nieuwe compareTo te geven, is misschien handig voor andere:

Code:
public int compareTo(BKnoop<Letter> ander)
{
  BKnoop<Letter> deze = (BKnoop<Letter>) this;
return (deze.get().getFrequentie() < ander.get().getFrequentie() ? -1 : (deze.get().getFrequentie()==ander.get().getFrequentie() ? 0 : 1));
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan