java arraylist 集合排序问题

我有个从数据库里面加载数据的集合,里面的数据如下:name:2Study:0Complete:0name:2Study:0Complete:0name:共选择了5道题St... 我有个从数据库里面加载数据的集合,里面的数据如下:
name:2 Study:0 Complete:0
name:2 Study:0 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:66不审核 Study:0 Complete:0
name:共选择了4道题 Study:1 Complete:0
name:共选择了4道题 Study:1 Complete:0
name:共选择了4道题 Study:0 Complete:0
name:共选择了4道题 Study:0 Complete:0

现在我对集合按照时间进行排序了(时间我没有打印出来),得到如下的数据:
排序后List:
name:2 Study:0 Complete:0
name:2 Study:0 Complete:0
name:66不审核 Study:0 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了4道题 Study:1 Complete:0
name:共选择了4道题 Study:0 Complete:0
name:共选择了4道题 Study:0 Complete:0
name:共选择了4道题 Study:1 Complete:0

问题来了: 我想将2个或 2个以上的同名对象还是按照排序前那样不做排序处理,即:
里面的 2,共选择了5道题,共选择了4道题 还是按照未排序前的顺序排序,
只针对 name 排序, 想要的效果如下:

name:2 Study:0 Complete:0
name:2 Study:0 Complete:0
name:66不审核 Study:0 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了5道题 Study:1 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了5道题 Study:0 Complete:0
name:共选择了4道题 Study:1 Complete:0
name:共选择了4道题 Study:1 Complete:0
name:共选择了4道题 Study:0 Complete:0
name:共选择了4道题 Study:0 Complete:0

请教大神,该怎么做?
展开
 我来答
lionheart1988
2015-06-24 · TA获得超过6445个赞
知道大有可为答主
回答量:5772
采纳率:72%
帮助的人:2455万
展开全部
你可以使用Collections 提供的sort方法对ArrayList进行排序,sort方法提供了一个Comparator接口类型的参数,这个参数中可以自定义排序规则

你可以自定义一个类实携型现Comparator接口,在里面编写你需要的排序规则,然后通过以下方式排序ArrayList

Collections.sort(arraylist,自定义排序规则对象);

sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)

根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意
e1 和 e2 元素,c.compare(e1, e2) 不得抛出
ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小塌贺于高子列表中的最低元素,则忽略合并)。此算辩衫猜法提供可保证的 n log(n) 性能。
指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的
n2 log(n) 性能。

参数:
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException -
如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparator

java.util
接口 Comparator<T>

类型参数:
T - 此 Comparator 可以比较的对象类型
追问
看不懂
指尖点滴bV
2015-06-24 · TA获得超过626个赞
知道小有建树答主
回答量:1258
采纳率:71%
帮助的人:252万
展开全部
举得案列不明显
追问
很简单的,就是对不同name的对象排序,相同name的对象不排序,怎么搞?
追答
 //这下面的案列能解决你的问题。你套着来。
 
 //Integer改成你的对象
 class ComparatorNum implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
//-1 代表降序 1 代表升序  你可以判断如果名字不相同,你就返回1或-1  名字相同就0代表不排序
if (o1>o2) {
return -1;
}else if(o1==o2){
return 0;
}else{
return 1;
}
}

}


//调用方法
ComparatorNum comparatorNum=new ComparatorNum();
Collections.sort(list,comparatorNum);
for (Integer integer : list) {
System.err.println("-----------------------------");
System.err.println(integer);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式