各オブジェクトが前と次の変数を持つオブジェクトのリストがあり、それらは文字列型です
List testList=new ArrayList();
CustomObject o1=new CustomObject();
o1.setPrevious(null);
o1.setNext("a");
CustomObject o2=new CustomObject();
o2.setPrevious("a");
o2.setNext("b");
CustomObject o3=new CustomObject ();
o3.setPrevious("b");
o1.setNext("END");
testList.add(o3);
testList.add(o1);
testList.add(o2);
しかし、o1、o2、o3の順序で取得する必要があります。これを行うためにコンパレーターを作成しましたが、正しく取得できません
class OrderComparator implements Comparator{
public int compare(CustomObject obj1, CustomObject obj2) {
if(obj1.getPrevious()==null)
return -1;
else if(obj2.getPrevious()==null)
return 1;
else if(obj1.getNext()!=null&&obj2.getPrevious()!=null&& obj1.getNext().equals(obj2.getPrevious()))
return -1;
else if(obj1.getNext()!=null&&obj2.getPrevious()!=null&&obj2.getNext().equals(obj1.getPrevious()))
return 1;
else if(obj1.getNext().equals("END"))
return -1;
else if(obj2.getNext().equals("END"))
return 1;
else return 0;
}
Collections.sort(testList,new OrderComparator());