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
Fórum › Java
metoda Arrays.sort
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);
}
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
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žení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 23 hostů
Podobná vlákna
Bubble sort - upravena metoda — založil Pasc
Buble sort a select sort — založil Rasťo
Sort v PHP — založil Smokie
Bash - sort — založil nashe
Moderátoři diskuze