黑马程序员技术交流社区

标题: 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
今天不知道在哪里看过一个这样的题,我是这样实现的,实现的比较简单。
  1. import java.util.*;

  2. public class Test0620 {

  3.         /**
  4.          * ArrayList如何实现插入的数据按自定义的方式有序存放
  5.          */
  6.        
  7.         public static void main(String[] args) {
  8.                 ArrayList  datas = new ArrayList();
  9.                 datas.add(new MyBean(11));
  10.                 datas.add(new MyBean(23));
  11.                 datas.add(new MyBean(12));

  12.                 Collections.sort(datas, new MyComparator());
  13.                 System.out.println(datas);

  14.         }

  15. }
  16. class MyBean
  17. {
  18.         private int age;
  19.         MyBean(int age){
  20.                 this.age=age;
  21.         }
  22.         public int getAge() {
  23.                 return age;
  24.         }
  25.         public void setAge(int age) {
  26.                 this.age = age;
  27.         }
  28.         @Override
  29.         public String toString(){
  30.                 return this.age+"";
  31.         }

  32. }
  33. class MyComparator implements Comparator{
  34.         public int compare(Object o1,Object o2){
  35.                 MyBean s1 = (MyBean)o1;
  36.                 MyBean s2 = (MyBean)o2;
  37.                
  38.                 //如果名称相同,还要比较年龄是否相同,因为年龄是int型,没有compareTo方法,所以封装成Integer对象
  39.                 int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
  40.                 return num;
  41.         }
  42. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2