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

 metoda Arrays.sort – Java – Fórum – Programujte.com metoda Arrays.sort – Java – Fórum – Programujte.com

 

Dagi0
Newbie
3. 7. 2008   #1
-
0
-

Ahoj,

prosim o dalsi daru.

1) Vytvorila jsem arrays, ktere bych chtela podle prijmeni seredit. Bohuzel nemuzu nikde najit, jak na to.

-> v jedne tride mam ulozeno:
public Zakaznik(String firstname, String secondname, String firm,
String statement, String street, int home_nummber, String city,
int city_nummber) {

-> v jine jsem vytvorila:
public static void main(String[] args) {

Zakaznik[] list = new Zakaznik[5];

list[0] = new Zakaznik("Müller", "Josef", "PC-Shop", "aktiv",
"Nova", 25, "Prachatice", 38801);
list[1] = ........
.
.


for (int i = 0; i < list.length; ++i) {
System.out.println(list[i]);
}
System.out.println("-----------------------------------------------------------");

????? do tohoto mista by to fungovalo, ale jak to jde dal, tak to uz nevim.-)

Arrays.sort(list);
for (int i = 0; i < list.length; ++i){



System.out.println(list[i]);
}
}}



2) Jak by se mohl tento program rozsirit, tak aby vice zakazniku mohle mit stejnou adresu?

Dekuji,
Dagi

Nahlásit jako SPAM
IP: 90.134.74.–
ghibulo0
Newbie
3. 7. 2008   #2
-
0
-

a implementovala jsi pro tu třídu Zakaznik interface Comparable? Tím se zavážeš k implementaci metody int compareTo(Zakaznik), pomocí které pak bude moci sort zjišťovat, kterej zákazník ma být před kterým...

Nahlásit jako SPAM
IP: 90.177.104.–
Dagi0
Newbie
3. 7. 2008   #3
-
0
-

To ghibulo : pokusila jsem se o to, ale vubec se mi to nedari. Mohl by jsi mi poradit, jak tu metodu int compareTo do kodu zabudovat.

Dekuji

Nahlásit jako SPAM
IP: 90.134.74.–
darthdeus0
Stálý člen
3. 7. 2008   #4
-
0
-

Tak mě to funguje takhle, akorát jsem trošku zjednodušil třídu Zakaznik aby to bylo pochopitelnější.

package comparator;


class Zakaznik implements Comparable {

private String jmeno;

public Zakaznik(String jmeno) {
this.jmeno = jmeno;
}

/**
* Metoda compareTo z rozhrani Comparable.
* Vzajemne porovna zakazniky podle delky jmena.
* @param o1
* @return -1 pokud je this < o1, +1 pokud je this > o2, jinak 0
*/
public int compareTo(Object o1) {
Zakaznik zakaznik = (Zakaznik) o1;
if (this.jmeno.length() < zakaznik.jmeno.length()) {
return -1;
} else if (this.jmeno.length() > zakaznik.jmeno.length()) {
return +1;
} else {
return 0;
}
}

/**
* Kvuli System.out.println(list[i]);
* @return
*/
@Override
public String toString() {
return this.jmeno;
}
}





package comparator;

import java.util.Comparator;

public class ZakaznikComparator implements Comparator {

public int compare(Object o1, Object o2) {
Zakaznik z1 = (Zakaznik) o1;
Zakaznik z2 = (Zakaznik) o2;
return z1.compareTo(z2);
}
}





package comparator;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {
Zakaznik[] list = new Zakaznik[4];

list[0] = new Zakaznik("Pepicek");
list[1] = new Zakaznik("Pepa");
list[2] = new Zakaznik("Joe");
list[3] = new Zakaznik("Josef");

for (int i = 0; i < list.length; ++i) {
System.out.println(list[i]);
}

System.out.println("---------------------------");

Arrays.sort(list, new ZakaznikComparator());
for (int i = 0; i < list.length; ++i) {
System.out.println(list[i]);
}
}
}




edit: Teď jsem si všim, že jsi to chtěla seřadit podle příjmení .. k tomu jde využít compareTo od Stringu, která funguje správně, takže potom asi takhle ..

    

public int compareTo(Object o1) {
Zakaznik zakaznik = (Zakaznik) o1;
return this.jmeno.compareTo(zakaznik.jmeno);
}

Nahlásit jako SPAM
IP: 85.70.184.–
(1..100).inject(&:+) komu se to nelíbí, ať mi klobouk políbí :P
Dagi0
Newbie
4. 7. 2008   #5
-
0
-

To darthdeus : Funguje to opravdu dobre, dekuji. Mas tip, jak by se to mohlo roztridit podle abecedy? Jake by se vzaly metody?
Dagi

Nahlásit jako SPAM
IP: 90.135.37.–
darthdeus0
Stálý člen
5. 7. 2008   #6
-
0
-

To Dagi : pokud Arrays.sort() hodíš např. pole Stringů tak ti je to setřídí podle abecedy.

Nahlásit jako SPAM
IP: 85.70.184.–
(1..100).inject(&:+) komu se to nelíbí, ať mi klobouk políbí :P
Dagi0
Newbie
10. 7. 2008   #7
-
0
-

To darthdeus : Ja jsem to zkousela s kolegini uz vselikaj zadat podle Stringu, ale bez uspechu. Staci to zadat pouze ve tride main a nebo se musi upravit i ty predchozi tridy?

Nahlásit jako SPAM
IP: 90.135.188.–
darthdeus0
Stálý člen
11. 7. 2008   #8
-
0
-

To Dagi : Stačí když v třídě Zakaznik nahradíš compareTo za to, ktery jsem napsal jako dodatek :) konkrétně



public int compareTo(Object o1) {

Zakaznik zakaznik = (Zakaznik) o1;
return this.jmeno.compareTo(zakaznik.jmeno);
}

a mělo by se to setřídit podle abecedy bez problému .. alespoň mě to funguje

Nahlásit jako SPAM
IP: 85.70.184.–
(1..100).inject(&:+) komu se to nelíbí, ať mi klobouk políbí :P
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, 50 hostů

Podobná vlákna

Buble sort a select sort — založil Rasťo

Sort v PHP — založil Smokie

Bash - sort — založil nashe

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ý