我正在编写程序来排序List> (使用泛型)。但是,不确定如何在比较器中处理通用数据类型。
这是我到目前为止所写的内容。
public void sort(final int columnNumber){
Collections.sort(this.listTable,new Comparator<List<T>>(){
@Override
public int compare(List<T> o1, List<T> o2) {
int compareInt = 0;
Object obj1 = o1.get(columnNumber);
Object obj2 = o2.get(columnNumber);
if(obj1.getClass().equals(obj2.getClass())){
if(obj1.getClass().toString().endsWith(".String")){
compareInt = obj1.toString().compareTo(obj2.toString());
}
else if(obj1.getClass().toString().endsWith(".Integer")){
compareInt = (Integer)obj1 - (Integer)obj2;
}
else{
compareInt = obj1.toString().compareTo(obj2.toString());
}
}
return compareInt;
}
});
}
答案 0 :(得分:1)
不要使用getClass()。toString()来比较类型。使用instanceof并尽可能通过通用接口对类型进行分组。例如,CharSequence是String,StringBuilder和StringBuffer的通用接口。
这是一种方法。您可能希望重新比较比较方法,以比较您拥有的任何类型,例如日期或URL或自定义对象。
class AccountConfiguration : EntityTypeConfiguration<Account>
public AccountConfiguration()
{
HasKey(x => x.Id);
...
}
}
class IndividualAccountConfiguration : EntityTypeConfiguration<IndividualAccount>
{
public IndividualAccountConfiguration()
{
ToTable("IndividualAccounts");
...
}
}
class DoctorConfiguration : EntityTypeConfiguration<Doctor>
{
public DoctorConfiguration()
{
...
}
}