黑马程序员技术交流社区
标题:
ArrayList如何实现插入的数据按自定义的方式有序存放
[打印本页]
作者:
浩临天下
时间:
2013-6-20 21:58
标题:
ArrayList如何实现插入的数据按自定义的方式有序存放
本帖最后由 Super_Class 于 2013-6-21 00:03 编辑
ArrayList如何实现插入的数据按自定义的方式有序存放
作者:
王磊
时间:
2013-6-20 22:40
ArrayList的特点是因为有角标,所以对其内部元素的操作,实际上就是对各元素的角标存放的。这个集合类本身是不具备元素自然顺序排列的特性。如果想按照某种自定义的方式进行元素的顺序排放,可以使用集合框架工具类Collections中的sort方法,这个方法可以自定义比较器Comparator,定义比较器的方法同Set和Map集合的方法相同,这样就可以对ArrayList集合类进行自定义的元素排放了。
作者:
韩冬
时间:
2013-6-20 23:41
可以使用迭代器先迭代遍历出来数组中的数据,然后进行操作。继承coppartator方法应该是treeset里面的吧。
作者:
wangpan
时间:
2013-6-21 00:06
今天不知道在哪里看过一个这样的题,我是这样实现的,实现的比较简单。
import java.util.*;
public class Test0620 {
/**
* ArrayList如何实现插入的数据按自定义的方式有序存放
*/
public static void main(String[] args) {
ArrayList datas = new ArrayList();
datas.add(new MyBean(11));
datas.add(new MyBean(23));
datas.add(new MyBean(12));
Collections.sort(datas, new MyComparator());
System.out.println(datas);
}
}
class MyBean
{
private int age;
MyBean(int age){
this.age=age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString(){
return this.age+"";
}
}
class MyComparator implements Comparator{
public int compare(Object o1,Object o2){
MyBean s1 = (MyBean)o1;
MyBean s2 = (MyBean)o2;
//如果名称相同,还要比较年龄是否相同,因为年龄是int型,没有compareTo方法,所以封装成Integer对象
int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
return num;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2