set.descendingSet(); set.remove(set.first()); System.out.println(set.size()); } }class b implements Comparable<b> { int f; int x,y; public b(int i, int j) { x=i; y=j; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + f; result = prime * result + x; result = prime * result + y; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; b other = (b) obj; if (f != other.f) return false; if (x != other.x) return false; if (y != other.y) return false; return true; } public int compareTo(b o) { if(this.f==o.getF()) return 1; return this.f-o.getF(); } public int getF() { return f; } public void setF(int f) { this.f = f; }}第一个问题疏忽了 添加了 hashcode 和equals 为什么结果还是3如果我要删除treeset中某一个节点 除了Iterator删除 还有没有什么好的办法
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Set;
import java.util.TreeSet;
public class aa
{
public static void main(String[] args)
{
TreeSet<b> set=new TreeSet<b>();
b b1=new b(1,1);
b1.setF(1);
set.add(b1);
b b2=new b(2,2);
b2.setF(2);
set.add(b2);
b b3=new b(3,3);
b3.setF(3);
set.add(b3);
Iterator<b> it=set.iterator();
while(it.hasNext())
System.out.println(it.next().getF());
set.descendingSet();
set.remove(set.first());
System.out.println(set.size());
}
}class b implements Comparable<b>
{
int f;
int x,y; public b(int i, int j) {
x=i;
y=j;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + f;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
b other = (b) obj;
if (f != other.f)
return false;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
public int compareTo(b o)
{
if(this.f==o.getF())
return 1;
return this.f-o.getF();
}
public int getF() {
return f;
} public void setF(int f) {
this.f = f;
}}第一个问题疏忽了 添加了 hashcode 和equals
为什么结果还是3如果我要删除treeset中某一个节点 除了Iterator删除 还有没有什么好的办法