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