Java 树设置如何使用迭代器正确显示数据

Java 树设置如何使用迭代器正确显示数据,java,Java,我正在学习TreeSet和使用这个集合,但是我在使用迭代器时遇到了一个小问题。。。我无法显示数据。。。 我还有第二个问题。。如何比较我的数据?现在在我的课堂上,我比较姓名字段(imie),但如果是姓氏,我想比较姓氏(nazwisko)。我该怎么做? 谢谢你的回答! PS:对不起我的英语。 这是我的代码: static String nazwisko, imie; static int idpracownika, pensja; static void run(){ TreeSet<

我正在学习TreeSet和使用这个集合,但是我在使用迭代器时遇到了一个小问题。。。我无法显示数据。。。 我还有第二个问题。。如何比较我的数据?现在在我的课堂上,我比较姓名字段(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";
    }
}
静态字符串nazwisko,imie;
静态int Idracownika,pensja;
静态无效运行(){
树集列表=新树集();
迭代器迭代器=list.Iterator();
while(true){
String opcja=JOptionPane.showInputDialog(“Podaj:Nazwisko、Imiê、idPracownika、Pensjê”);
//StringTokenizer st=新的StringTokenizer(opcja);
开关(opcja){
案例(“退出”):
系统出口(0);
打破
案例(“名称”):
System.out.println(“Imiona:”);
//while(iterator.hasNext()){
系统输出打印项次(列表);
打破
案例(“姓氏”):
System.out.println(“纳粹党:”);
while(iterator.hasNext()){
System.out.println(iterator.next().getName());
}
打破
违约:
字符串[]bufor;
bufor=opcja.split(“”);
imie=bufor[0];
nazwisko=bufor[1];
idpracownika=Integer.parseInt(bufor[2]);
pensja=Integer.parseInt(bufor[3]);
增加(新的恶习(nazwisko、imie、Idracownika、pensja));
打破
}
}
公共类实践{
公共字符串纳兹维斯科;
公共字符串imie;
拉科尼卡公共交通;
公共内特佩斯贾;
Pracownicy(字符串nazwisko、字符串imie、内部idPracownika、内部pensja){
这个.nazwisko=nazwisko;
this.imie=imie;
这个.idPracownika=idPracownika;
this.pensja=pensja;
}
公共字符串getName(){return imie;}
公共字符串getNazzname(){return nazwisko;}
@凌驾
公众利益比较(法定义务){
将此.imie.compareTo返回(o.imie);
}
公共字符串toString(){
返回nazwisko+“”+imie+“”+idPracownika+“”+pensja+“\n”;
}
}

我想比较一下姓氏

@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;
    }
}

您可以创建不同的
比较器
以根据需要进行排序。最后,使用
Collections.sort()
列表
进行排序

示例代码:

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);

好的,但我想以防万一只比较姓名(imie),以防万一姓氏只比较姓氏(nazwisko)当然,如果可能的话……你知道如何使用迭代器显示我的树集吗?你做得对。问题在哪里?输入是什么?你好!感谢你的回答和时间!这是我的全部代码:我做错了什么?我知道我不应该粘贴到pastebin的链接,但整个代码太长了……我将感谢你的回答!我知道我有一个小问题,因为我用ArrayList->ex测试了它。我输入了a 1和b a 1,对于姓名,我收到了a a,对于姓氏b a,但我想得到:姓名:a和姓氏a,b…sow我该怎么做?好的,我做了。首先将所有数据插入ArrayList,然后使用comparator将其插入treeset
Iterator<Pracownicy> iterator = set.iterator();
Pracownicy pracownicy = null;
while (iterator.hasNext()) {
    pracownicy = iterator.next();
    ...
}