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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;

class Person
{
               private String name;
               private int age;
              Person(String name,int age)
              {
                     this.name = name;
                     this.age = age;
              }
              public String getName()
              {
                   return name;
               }
                public int getAge()
               {

                   return age;
               }

}

class ArrayListTest
{       


                 public static void sop(Object obj)
                 {
                       System.out.println(obj);
                  }
                 public static void main(String[] args)
                 {
                          ArrayList al = new ArrayList();


                             al.add(new Person("lisi",46));
                            al.add(new Person("wangwu",35));
                            al.add(new Person("zhouqi",25));
                            al.add(new Person("sisan",20));
               
                             Iterator it = al.iterator();
                             while(it.hasNext())
                             {
                                    Person p = (Person)it.next();
                                    sop(p.getName()+"::"+p.getAge());
                              }
               

               
               
                }

       
                  public static ArrayList singleElement(ArrayList al)
                  {
                          ArrayList newAl = new ArrayList();
                          Iterator it = al.iterator();
               
                         while(it.hasNext())
                         {
                       
                                   Object obj = it.next();

                                    if (!newAl.contains(obj))
                                     newAl.add(obj);
                         
                         
                           }     
                                    return newAl;
            }

}

7 个回复

正序浏览
wxw19910324 发表于 2016-1-4 16:37
看的不是很明白  能详细的写个代码吗? 感谢

第一种:
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. public class Test {
  4.         public static void main(String[] args) {
  5.                 ArrayList<Person> al = new ArrayList<Person>();
  6.                 al.add(new Person("lisi", 46));
  7.                 al.add(new Person("wangwu", 35));
  8.                 al.add(new Person("zhouqi", 25));
  9.                 al.add(new Person("sisan", 20));
  10.                 Collections.sort(al);
  11.                 for(Person p:al){
  12.                         System.out.println(p.getName()+"::"+p.getAge());
  13.                 }
  14.         }
  15. }

  16. class Person implements Comparable<Person> {
  17.         private String name;
  18.         private int age;

  19.         public String getName() {
  20.                 return name;
  21.         }

  22.         public int getAge() {
  23.                 return age;
  24.         }

  25.         public Person(String name, int age) {
  26.                 this.name = name;
  27.                 this.age = age;
  28.         }

  29.         @Override
  30.         public int compareTo(Person o) {
  31.                 int num = new Integer(o.getAge()).compareTo(this.getAge());
  32.                 return num==0?o.getName().compareTo(this.getName()):num;
  33.         }
  34. }
复制代码

第二种:
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. public class Test {
  5.         public static void main(String[] args) {
  6.                 ArrayList<Person> al = new ArrayList<Person>();
  7.                 al.add(new Person("lisi", 46));
  8.                 al.add(new Person("wangwu", 35));
  9.                 al.add(new Person("zhouqi", 25));
  10.                 al.add(new Person("sisan", 20));
  11.                 Collections.sort(al,new Comparator<Person>(){
  12.                         public int compare(Person o1, Person o2) {
  13.                                 int num = new Integer(o2.getAge()).compareTo(o1.getAge());
  14.                                 return num==0?o2.getName().compareTo(o1.getName()):num;
  15.                         }
  16.                         
  17.                 });
  18.                 for(Person p:al){
  19.                         System.out.println(p.getName()+"::"+p.getAge());
  20.                 }
  21.         }
  22. }

  23. class Person{
  24.         private String name;
  25.         private int age;

  26.         public String getName() {
  27.                 return name;
  28.         }

  29.         public int getAge() {
  30.                 return age;
  31.         }

  32.         public Person(String name, int age) {
  33.                 this.name = name;
  34.                 this.age = age;
  35.         }
  36. }
复制代码
回复 使用道具 举报
黑夜中那颗星 发表于 2016-1-4 13:45
Collections.sort(al);第一种方法,元素(Person)需要实现Comparable接口,然后重写CompareTo方法
Collectio ...

看的不是很明白  能详细的写个代码吗? 感谢
回复 使用道具 举报
Collections.sort(al);第一种方法,元素(Person)需要实现Comparable接口,然后重写CompareTo方法
Collections.sort(al,比较器);第二种方法,传入比较器到sort方法参数里
比较器需要实现Comparator接口,重写Compare方法
回复 使用道具 举报
666611666.…………。
回复 使用道具 举报
  有两种的方法可以实现啊!   楼上的已经说了!    你的知识点掌握的还是不够清晰!
回复 使用道具 举报
自己定义一个排序的方法,俩个年龄相减,根据返回值判断
回复 使用道具 举报
应该是年龄倒序吧, 可以在类里实现 comparable 接口 或者 重写 compara
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马