我正在学习TreeSet并使用这个集合,但是使用迭代器我有一点问题......我无法显示数据...... 我有第二个问题..我如何比较我的数据? ex:现在在我的班级我比较名字字段(imie)但是如果姓氏我想比较姓氏(nazwisko)。我怎样才能做到这一点? 我将非常感谢你的回答! PS:对不起我的工程师。 这是我的代码:
static String nazwisko, imie;
static int idpracownika, pensja;
static void run(){
TreeSet<Pracownicy> list = new TreeSet<Pracownicy>();
Iterator<Pracownicy> iterator = list.iterator();
while(true){
String opcja = JOptionPane.showInputDialog("Podaj: Nazwisko, Imiê, idPracownika, Pensjê");
//StringTokenizer st = new StringTokenizer(opcja);
switch(opcja){
case ("exit"):
System.exit(0);
break;
case("name"):
System.out.println("Imiona:");
//while (iterator.hasNext()){
System.out.println(list);
break;
case("surname"):
System.out.println("Nazwiska:");
while(iterator.hasNext()){
System.out.println(iterator.next().getName());
}
break;
default:
String[] bufor;
bufor = opcja.split(" ");
imie = bufor[0];
nazwisko = bufor[1];
idpracownika = Integer.parseInt(bufor[2]);
pensja = Integer.parseInt(bufor[3]);
list.add(new Pracownicy(nazwisko, imie, idpracownika, pensja));
break;
}
}
public class Pracownicy implements Comparable<Pracownicy> {
public String nazwisko;
public String imie;
public int idPracownika;
public int pensja;
Pracownicy(String nazwisko, String imie, int idPracownika, int pensja){
this.nazwisko=nazwisko;
this.imie=imie;
this.idPracownika=idPracownika;
this.pensja=pensja;
}
public String getName() { return imie; }
public String getSurname() { return nazwisko; }
@Override
public int compareTo(Pracownicy o) {
return this.imie.compareTo(o.imie);
}
public String toString(){
return nazwisko + " " + imie + " " + idPracownika + " " + pensja + "\n";
}
}
答案 0 :(得分:0)
我想比较一下姓氏
@Override
public int compareTo(Pracownicy o) {
int firstNameEqual = this.imie.compareTo(o.imie);
// if first name is equal then compare on surname
if(firstNameEqual==0){
return this.nazwisko.compareTo(o.nazwisko);
}else{
return firstNameEqual;
}
}
您可以根据需要创建不同的Comparator
进行排序。最后使用Collections.sort()
对List
进行排序。
示例代码:
TreeSet<Pracownicy> set = new TreeSet<Pracownicy>();
Comparator<Pracownicy> surnameComparator = new Comparator<Pracownicy>() {
@Override
public int compare(Pracownicy o1, Pracownicy o2) {
return o1.nazwisko.compareTo(o2.nazwisko);
}
};
Comparator<Pracownicy> firstNameComparator = new Comparator<Pracownicy>() {
@Override
public int compare(Pracownicy o1, Pracownicy o2) {
return o1.imie.compareTo(o2.imie);
}
};
List<Pracownicy> list = new ArrayList<Pracownicy>(set);
// sort by surname
Collections.sort(list, surnameComparator);
// sort by first name
Collections.sort(list, firstNameComparator);
如何迭代Set
?
Iterator<Pracownicy> iterator = set.iterator();
Pracownicy pracownicy = null;
while (iterator.hasNext()) {
pracownicy = iterator.next();
...
}