问题遇到的现象和发生背景
set集合不是实现的的Colletion吗,为啥我这里使用Iterator遍历时,遍历的不是全部结果嘞?
Vip{年龄=3, 姓名='zhangsa'}
Vip{年龄=3, 姓名='zhangsan'}
Vip{年龄=24, 姓名='liwu'}
Vip{年龄=33, 姓名='lisi'}
Vip{年龄=3, 姓名='zhangsan'}
Vip{年龄=33, 姓名='lisi'}
问题相关代码,请勿粘贴截图
import java.util.Iterator;
import java.util.TreeSet;
/**
如何实现comparable接口
放在TreeSet中的元素类型需实现comparable接口方法
/
public class TreeSetTest {
public static void main(String[] args) {//创建Vip对象 Vip v1 = new Vip(3,"zhangsan"); Vip v2 = new Vip(3,"zhangsa"); Vip v3 = new Vip (33,"lisi"); Vip v4 = new Vip(24,"liwu"); //创建Treeset集合 TreeSet<Vip> treeset = new TreeSet<Vip>(); //往treeset集合中添加元素,使用add treeset.add(v1); treeset.add(v2); treeset.add(v3); treeset.add(v4); //遍历set集合使用foreach for(Vip v :treeset){ System.out.println(v); } System.out.println("--------------"); //不使用foreach遍历集合,迭代器 Iterator<Vip> it = treeset.iterator(); while (it.hasNext()){ Vip vip=it.next(); System.out.println(it.next()); //System.out.println(vip); }
}
}
//实现Comparable接口
class Vip implements Comparable{
//属性
int age;
String name;
//有参构造方法
public Vip(int age, String name) {this.age = age; this.name = name;
}
@Override
public String toString() {return "Vip{" + "年龄=" + age + ", 姓名='" + name + '\'' + '}';
}
@Override
public int compareTo(Vip o) {if(this.age == o.age){ return this.name.compareTo(o.name); } return this.age - o.age;
}
}
}