有以下代码:
package com.lzw;
import java.util.*;
public class UpdateStu implements Comparable{
String name;
long id;
public UpdateStu(long id, String name) {
this.id = id;
this.name = name;
}
public int compareTo(Object o) {
UpdateStu upstu = (UpdateStu) o;
int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);
return result;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
UpdateStu stu1 = new UpdateStu(112,"李同学");
UpdateStu stu2 = new UpdateStu(113,"陈同学");
UpdateStu stu3 = new UpdateStu(114,"王同学");
UpdateStu stu4 = new UpdateStu(115,"马同学");
UpdateStu stu5 = new UpdateStu(116,"赵同学");
TreeSet tree = new TreeSet();
System.out.println("对象tree的地址:"+tree);
tree.add(stu1);
System.out.println("对象stu1对象的地址:"+stu1);
tree.add(stu2);
System.out.println("对象stu2对象的地址:"+stu2);
tree.add(stu3);
System.out.println("对象stu3对象的地址:"+stu3);
tree.add(stu4);
System.out.println("对象stu4对象的地址:"+stu4);
tree.add(stu5);
System.out.println("对象stu5对象的地址:"+stu5);
Iterator it = tree.iterator();
System.out.println("迭代器it(指向)的地址:"+it);
System.out.println("tree.iterator()返回的地址:"+tree.iterator());
System.out.println("Set集合中的所有元素:");
int i=0;
while (it.hasNext()) {
String []dd={"stu1","stu2","stu3","stu4","stu5"};
UpdateStu stu = (UpdateStu) it.next();
System.out.println("stu->"+"对象"+dd[i]+"的地址:"+stu);
System.out.println(stu.getId() + " " + stu.getName());
i++;
}
it=tree.headSet(stu3).iterator();
System.out.println("截取前面部分的集合:");
while (it.hasNext()) {
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
it = tree.subSet(stu2, stu3).iterator();
System.out.println("截取中间部分的集合");
while (it.hasNext()) {
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
}
}
在Java语言里没有指针(地址)的概念,只用引用的概念,但是引用本身就是一个指向new分配的对象地址(希望我没有理解错误),现在问题来了:
1、为什么System.out.println("对象tree的地址:"+tree); 输出的是:[]
2、为什么System.out.println("迭代器it(指向)的地址:"+it);输出的是:”java.util.TreeMap$KeyIterator@5c647e05“与System.out.println("tree.iterator()返回的地址:"+tree.iterator());输出的:”java.util.TreeMap$KeyIterator@33909752“地址不一样?