【发布时间】:2010-11-09 09:55:24
【问题描述】:
好的,这是一个棘手的问题。我有一个集合列表。我想按顺序对 Sets 中的对象进行排序。
将每个集合想象成代表学校中的一个班级。每个集合都包含人员对象。一个人对象持有一个字符串值作为名称。我想在循环并写出之前按名称排列 Set 中的 Persons。
有没有办法使用Collections.sort(); 或类似的东西来实现这一点?
for (Set<Person> s : listOfAllChildren) {
for (Person p : s) {
if(p.getClass().equalsIgnoreCase("Jones")){
System.out.println(p.getName());
}
else if...//carry on through other classes
}
}
我知道一个班有 2 个以上的孩子可能有相同的名字,但请忽略这个
【问题讨论】:
-
if在第 2 行是不必要的。 -
我希望,第 3 行中的
p.getClass()只是一个错字,您没有为每个个人或家庭设置一个单独的类 ;-) -
@Andreas_D:Person 只有一个类,但是从这个类创建了很多人对象。这是一个问题吗? getClass 方法返回该班级的教师姓名。Person 对象由电子表格数据动态生成。
-
我更改了标题以反映它是您要排序的集合这一事实。如果您不同意,请回滚。
-
getClass()不返回字符串(教师姓名),而是返回Class对象。您可以将其与字符串进行比较,但结果将始终为false。并且“重新定义”getClass()以返回 String 的类将无法编译。