Trideni Hashsetu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Trideni Hashsetu – Java – Fórum – Programujte.comTrideni Hashsetu – Java – Fórum – Programujte.com

 

crash410
Duch
2. 11. 2012   #1
-
0
-

Cau v  jave zacinam tak bych prosim chtel poradit:) mam 3 tridy:) jedna trida obsahu HashSet tech ostatnich dvou a potreboval bych poradit jak muzu setridit ten HashSet tech objeku. Diky

Nahlásit jako SPAM
IP: 176.97.9.–
zlz
~ Anonymní uživatel
634 příspěvků
2. 11. 2012   #2
-
+1
-
Zajímavé

HashSet nemá smysl řadit (ani to nejde). Ulož ta data do nečeho jiného a seřaď si to jak potřebuješ.

Nahlásit jako SPAM
IP: 80.188.216.–
crash410
Duch
2. 11. 2012   #3
-
0
-

#2 zlz
Takze treba to TreeSetu?

Nahlásit jako SPAM
IP: 176.97.9.–
ingiraxo+15
Grafoman
3. 11. 2012   #4
-
0
-

můžeš použít i Pair, tan by seřadit jít měl, nebo použít normálně List a budeš řadit vlastní objekt, kterej bude obsahovat ty 2 třídy

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
crash41
~ Anonymní uživatel
9 příspěvků
3. 11. 2012   #5
-
0
-

Dik a mohli by jste popsat aspon trochu postup. Mam jeste rekurzivni metodu, ktera vypisuje obsah hashsetu. Kde presne v ty tride by se melo to trizeni implementovat? Diky

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 176.97.9.–
ingiraxo+15
Grafoman
3. 11. 2012   #6
-
0
-

pokud je nějaká možnost tak mě někdo opraví, ale HashSet sortovat nejde.. musel bys ho překonvertovat do jinýho kontejnéru, kterej jde (např. List a další) a pomocí vlastního porovnávacího pravidla budeš prvky řadit

pak jednoduše přes Collections.Sort(...), kde druhej parametr by měl bejt vlastní comparator

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
crash41
~ Anonymní uživatel
9 příspěvků
4. 11. 2012   #7
-
0
-

Muzes to prosim trochu rozvest:-) v jave se jeste moc nevyznam. V konstruktoru si vytvorim hashset objektu. A kde presne je mam prevest na treba list nejakou metodou?:-) dekuju za radu:-)

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 89.24.8.–
ingiraxo+15
Grafoman
4. 11. 2012   #8
-
0
-

#7 crash41
noo, když máš HashSet, tak převod třeba do Listu je jako 

List<String> list = new ArrayList<String>(instance_hashset);

A seřazení prvků je pak jako (pokud obsahují základní datový typy)

Collections.sort(list);

A funkce sort má druhej parametr, kde si můžeš nastavit vlastní porovnání, takže vytvoříš novou třídu, která bude vycházet z Comparatoru
Tohle je hlavně dobrý, když prvky budou nějaký vlastní objekty a né String,int apod.

public class VlastniComparator implements Comparator<TridaA> {
    @Override
    public int compare(TridaA o1, TridaA o2) {
        // zde podle nějakýho pravidla porovnáš objekty
        return ...
    }
}

// pak jen upravíš funkci sort na
Collections.sort(list, new VlastniComparator());

Kdybys potom opět chtěl List převést do HashSetu, tak by to mělo být podobný 

HashSet<String> hash = new HashSet<String>(list);



Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
crash41
~ Anonymní uživatel
9 příspěvků
5. 11. 2012   #9
-
0
-

Diky uz to chapu. Jen se chci zeptat kde presne v ty mi tride volam to prevedeni hashsetu na list a obracene?

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 89.24.9.–
zlz
~ Anonymní uživatel
634 příspěvků
5. 11. 2012   #10
-
0
-

Asi tam kde chceš ta data seřadit.

Nahlásit jako SPAM
IP: 78.156.159.–
crash41
~ Anonymní uživatel
9 příspěvků
5. 11. 2012   #11
-
0
-

Ted jsem zkousel udelat tu tridu VlastniComparator a zkusim to zkompilovat a napsalo mi to 
VlastniComaparator is not abstract and does not override abstract method compareTo(Utvar) in java.lang.Comparable

Nahlásit jako SPAM
IP: 2001:718:1e02:8144::bead:...–
crash41
~ Anonymní uživatel
9 příspěvků
5. 11. 2012   #12
-
0
-

tak to uz jsme vyresil:) ale porad mi neni nejak jasne:) kdyz mam v tride Utvar implementovanou metodu
 

  public boolean equals (Object o) {
        if (o instanceof Utvar) {
            Utvar druha = (Utvar)o;
            return zkratka.equals(druha.getZkratka());
        }
        else return false;
    }

Protoze trida Utvar obsaduje jen 2 Stringy jako datovy atributy zkratka a nazev. Musim teda pouzivat tu tridu VlastniComparator a nebo to jde udelat jednoduseji kdyz to chci seradit jen podle te zkratky. Dik

Nahlásit jako SPAM
IP: 2001:718:1e02:8144::bead:...–
crash41
~ Anonymní uživatel
9 příspěvků
5. 11. 2012   #13
-
0
-

Nebo me napadlo:) slo by tu tridu Utvar upravit popř to převest na List kdyz bych chtel vyzit jen metodu 
 

public class Utvar implements Comparable <Utvar> {
       
           ....

		
    public int compareTo(Utvar druhy) {
        
        return zkratka.compareTo(druhy.zkratka);
    }

		...
}
Nahlásit jako SPAM
IP: 2001:718:1e02:8144::bead:...–
crash41
~ Anonymní uživatel
9 příspěvků
5. 11. 2012   #14
-
0
-

Tak jsem nejak implementoval tu tridu VlastniComparator()

import java.util.*;
public class VlastniComparator implements Comparator<Utvar> {
    @Override
    public int compare(Utvar o1, Utvar o2) {
        if(o1.getZkratka() == o2.getZkratka()) return 0;
        String zkratka = o1.getZkratka();
        return zkratka.compareTo(o2.getZkratka()); 
        
    }
}

Ale presne nevim kde presne volat to 
 

List<Utvar> list = new ArrayList<Utvar>(podrizene);
       Collections.sort(list, new VlastniComparator());
       HashSet<Utvar> podrizene = new HashSet<Utvar>(list);

Kdyz tam mam jenom rekuzivni metodu na vypis toho HashSetu dik za radu

Nahlásit jako SPAM
IP: 2001:718:1e02:8144::bead:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 40 hostů

Podobná vlákna

Třídění — založil Frantisek

Trideni hudby — založil Halbax

Třídění zlomků — založil Antonín Smékal

Třídění čísel — založil Kaja

Trideni jmen — založil Lukáš

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý