Java 按关系值排序?
我有两个相互关联的模型对象类:Java 按关系值排序?,java,realm,realm-java,Java,Realm,Realm Java,我有两个相互关联的模型对象类: class Car { private String model; private Manufacturer manufacturer; // getter and setter methods } 以及: 如您所见,对象是相关的,每辆车都有一个制造商 现在,在领域中,我需要得到所有的汽车,但排序他们的制造商的名字。如何按关系值排序 现在,我只有这些: RealmResults<Car> cars = realm.wh
class Car {
private String model;
private Manufacturer manufacturer;
// getter and setter methods
}
以及:
如您所见,对象是相关的,每辆车都有一个制造商
现在,在领域中,我需要得到所有的汽车,但排序他们的制造商的名字。如何按关系值排序
现在,我只有这些:
RealmResults<Car> cars = realm.where(Car.class).findAll();
如何按制造商名称按升序对其进行排序?您需要以下内容:
class MyComp implements Comparator<Manufacturer>
{
@Override
public int compare(Manufacturer o1, Manufacturer o2) {
//
// Compare the o1 properties with o2 properties
}
}
你需要像下面这样的东西
class MyComp implements Comparator<Manufacturer>
{
@Override
public int compare(Manufacturer o1, Manufacturer o2) {
//
// Compare the o1 properties with o2 properties
}
}
您可能注意到了,但是realm.whereCar.class.findAllSortedmanufacturer.name、Sort.ASCENDING链接排序在realm 2.3.x中还不受支持
在您的例子中,最简单的方法是利用Realm作为无SQL数据库的优势,将制造商名称存储在制造商本身旁边
class Car {
private String model;
private Manufacturer manufacturer;
private String manufacturerName;
public void setManufacturer(Manufacturer manufacturer) {
if(manufacturer == null) {
this.manufacturerName = null; // direct field access works since 0.88.0
} else {
this.manufacturerName = manufacturer.getName();
}
this.manufacturer = manufacturer;
}
}
以及:
现在您可以执行以下操作:
RealmResults<Car> cars = realm.where(Car.class)
.findAllSorted("manufacturerName", Sort.ASCENDING);
您可能注意到了,但是realm.whereCar.class.findAllSortedmanufacturer.name、Sort.ASCENDING链接排序在realm 2.3.x中还不受支持
在您的例子中,最简单的方法是利用Realm作为无SQL数据库的优势,将制造商名称存储在制造商本身旁边
class Car {
private String model;
private Manufacturer manufacturer;
private String manufacturerName;
public void setManufacturer(Manufacturer manufacturer) {
if(manufacturer == null) {
this.manufacturerName = null; // direct field access works since 0.88.0
} else {
this.manufacturerName = manufacturer.getName();
}
this.manufacturer = manufacturer;
}
}
以及:
现在您可以执行以下操作:
RealmResults<Car> cars = realm.where(Car.class)
.findAllSorted("manufacturerName", Sort.ASCENDING);
不知道为什么,但它不起作用。尽管我复制并粘贴了它,但它似乎为所有的manufacturerNames分配了null。不确定原因。只有当您设置的制造商为空或其名称为空时,才可能出现这种情况;但如果您使用的是0.87.5或更高版本的Realm,这也是可能的。不知道为什么,但它不起作用。尽管我复制并粘贴了它,但它似乎为所有的manufacturerNames分配了null。不确定原因。只有当您设置的制造商为空或其名称为空时,才可能出现这种情况;但是,如果您使用的是0.87.5或更高版本的Realm,也可以这样做。