A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Super_Class 于 2013-6-21 00:03 编辑

ArrayList如何实现插入的数据按自定义的方式有序存放

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

4 个回复

倒序浏览
ArrayList的特点是因为有角标,所以对其内部元素的操作,实际上就是对各元素的角标存放的。这个集合类本身是不具备元素自然顺序排列的特性。如果想按照某种自定义的方式进行元素的顺序排放,可以使用集合框架工具类Collections中的sort方法,这个方法可以自定义比较器Comparator,定义比较器的方法同Set和Map集合的方法相同,这样就可以对ArrayList集合类进行自定义的元素排放了。

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

回复 使用道具 举报
可以使用迭代器先迭代遍历出来数组中的数据,然后进行操作。继承coppartator方法应该是treeset里面的吧。

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

回复 使用道具 举报
今天不知道在哪里看过一个这样的题,我是这样实现的,实现的比较简单。
  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. }
复制代码

点评

很给力  发表于 2013-6-21 00:35
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马