Avatar billede oink Nybegynder
30. april 2006 - 01:34 Der er 5 kommentarer og
1 løsning

Comparator i frequency

Hej.

Er det ikke muligt at specificere hvordan javas Collections.frequency skal sammenligne objekter? Man kan jo definere compareTo i objektet, men jeg skal sammenligne samme klasse på to forskellige måder.
Avatar billede oink Nybegynder
30. april 2006 - 01:35 #1
(egentlig er det vel equals man skal definere)
Avatar billede oink Nybegynder
30. april 2006 - 02:25 #2
Hmm, nu har jeg siddet og rodet lidt med frequency, og jeg kan ikke få den til at virke.

Følgende kode:
---
ArrayList<hej> a = new ArrayList<hej>();
        hej o = new hej(1);
        a.add(o);
        a.add(o);
        a.add(o);
        a.add(new hej(1));
        a.add(new hej(1));
        System.out.println(Collections.frequency(a,o));
---

udskriver "3". Min hej-klasse ses her:
---
public class hej
{
    private int t;

    public hej(int d)
    {
        t = d;
    }

    public boolean equals(hej h)
    {
        return t == (h.t);
    }
}
---

Burde frequency ikke give 5?
Avatar billede arne_v Ekspert
30. april 2006 - 02:43 #3
prøv:

    public boolean equals(Object h) {
        return t == (((Hej)h).t);
    }
Avatar billede arne_v Ekspert
30. april 2006 - 02:44 #4
NB: hvis det skal være pænt må man godt lige checke typen med instanceof
inden man caster !
Avatar billede oink Nybegynder
30. april 2006 - 09:46 #5
Det hjalp.
Avatar billede arne_v Ekspert
30. april 2006 - 15:18 #6
så ligger jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester