2015-11-04 91 views
0

Arraylist包含类模型。类有一个参数“状态”,其值将是“开放”,“关闭”,“即将到来”。Arraylist与基于字符串的条件进行比较

如何根据'status'参数对'arraylist'进行排序,即'open'应该首先出现,'close'&'coming'将分别跟随它。

知道的任何帮助..

+1

随时提供帮助,请试用,发布一些代码f或者我们也开始。 –

回答

1

你只需要实现Comparable接口模型类

然后实现compareTo方法与你的比较逻辑。

并致电Collections.sort(yourModelList);做出来。

您可以找到一个实现Comparable接口here的示例。

希望这会有所帮助。

-1

除非您的列表中的元素具有自然排序的概念,否则不会更改YourClass以实施Comparable<YourClass>

相反,实施Comparator<YourClass>,这是一个完全独立的类:

class YourClassComparator implements Comparator<YourClass> { 
    @Override 
    public int compare(YourClass a, YourClass b) { 
    // ... 
    } 
} 

,然后通过这方面的一个实例,以Collections.sort

Collections.sort(yourModelList, new YourClassComparator()); 
+0

@Downvoter:谨慎解释? –

0

尝试此逻辑

if(value.equals("open")) 
{ 
    modelclass.setstatus("0"+value) 
} 
else if(value.equals("close")) 
{ 
    modelclass.setstatus("1"+value) 
} 
else 
{ 
    modelclass.setstatus("2"+value) 
} 

Collections.sort(yourModelList); 

sorting arralist as per your need done and after that remove first character from that string like 

String value_result=modelclass.getstatus.substring(1); 
+0

纯粹为了排序而突变数据是不必要的(最好),最坏的情况是危险的 - 如果在排序过程中抛出异常会怎么样?这会使您的数据处于损坏状态。如果另一个线程正在访问相同的数据呢?等等。如果status是一个字符串,它也只能这样工作。 –

+0

我的逻辑根据他的要求是正确的。这是基本的级别的答案,如果提问者不知道有关类比,那么上面的答案是有用的 –

+0

感谢Ketan的帮助。我知道java中Comparable&Comparator的用法。 Nanoc的回答帮助我了解了基于条件我们如何实现它。 –