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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Collection和Collections的区别:
                Collection:是单列的顶层接口,有子接口List和Set。
                     Collections:针对集合操作的工具类,可以对集合进行排序和二分查找。

9 个回复

倒序浏览
  1. package com.kxg.Collections;

  2. import java.util.ArrayList;
  3. import java.util.Collections;

  4. /*
  5. * Collections类的方法:
  6. *                 public static <T> void sort(List<T> list):排序
  7. *                 public static <T> int binarySearch(List<? extends T> list):二分查找
  8. *                 public static <T> T max(Collection<?> coll):最大值
  9. *                 public static void reverse(List<?> list):反转
  10. *                 public static void shuffle(List<?> list):随机置换
  11. */
  12. public class CollectionsDemo {
  13.         public static void main(String[] args) {
  14.                 ArrayList<Integer> arr = new ArrayList<Integer>();
  15.                 arr.add(30);
  16.                 arr.add(60);
  17.                 arr.add(40);
  18.                 arr.add(10);
  19.                 arr.add(50);
  20.                 arr.add(20);

  21.                 // public static <T> void sort(List<T> list)
  22.                 Collections.sort(arr);
  23.                 System.out.println(arr);

  24.                 // public static <T> int binarySearch(List<? extends T> list)
  25.                 System.out.println(Collections.binarySearch(arr, 30));

  26.                 // public static <T> T max(Collection<?> coll)
  27.                 System.out.println(Collections.max(arr));

  28.                 // public static void reverse(List<?> list)
  29.                 Collections.reverse(arr);
  30.                 System.out.println(arr);

  31.                 // public static void shuffle(List<?> list)
  32.                 Collections.shuffle(arr);
  33.                 System.out.println(arr);
  34.         }
  35. }
复制代码
回复 使用道具 举报
本帖最后由 Kevin.Kang 于 2015-7-21 14:58 编辑

对自定义对象进行排序的时候,有两种方式:自然排序,比较器排序
  1. package com.kxg.Collections;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;

  5. public class CollectionsDemo2 {
  6.         public static void main(String[] args) {
  7.                 ArrayList<Person> arr = new ArrayList<Person>();
  8.                 Person p1 = new Person("李延旭", 20);
  9.                 Person p2 = new Person("任兴亚", 23);
  10.                 Person p3 = new Person("赵磊", 19);
  11.                 Person p4 = new Person("王澳", 20);

  12.                 arr.add(p1);
  13.                 arr.add(p2);
  14.                 arr.add(p3);
  15.                 arr.add(p4);

  16. //                自然排序,需要对象实现Comparable接口
  17.                 Collections.sort(arr);
  18.                 for (Person p : arr) {
  19.                         System.out.println(p.getName() + ":" + p.getAge());
  20.                 }
  21.                
  22.                
  23. //                比较器排序
  24.                 Collections.sort(arr, new Comparator<Person>()
  25.                 {

  26.                         @Override
  27.                         public int compare(Person p1, Person p2) {
  28.                                 int num = p1.getAge() - p2.getAge();
  29.                                 int num2 = num == 0 ? p1.getName().compareTo(p2.getName()) : num;
  30.                                 return num2;
  31.                         }
  32.                 });
  33.         }
  34. }
复制代码



回复 使用道具 举报
感觉你学的很好 ,向你学习了

点评

谢谢,么么哒  发表于 2015-7-21 09:21
回复 使用道具 举报
你们学的好快!
回复 使用道具 举报
恩 学习了
回复 使用道具 举报
Person类:
  1. package com.kxg.Collections;

  2. public class Person implements Comparable<Person> {// 实现接口
  3.         private String name;
  4.         private int age;

  5.         public Person() {
  6.                 super();
  7.         }

  8.         public Person(String name, int age) {
  9.                 super();
  10.                 this.name = name;
  11.                 this.age = age;
  12.         }

  13.         public String getName() {
  14.                 return name;
  15.         }

  16.         public void setName(String name) {
  17.                 this.name = name;
  18.         }

  19.         public int getAge() {
  20.                 return age;
  21.         }

  22.         public void setAge(int age) {
  23.                 this.age = age;
  24.         }

  25.         @Override
  26.         public String toString() {
  27.                 return "name=" + name + ", age=" + age;
  28.         }

  29.         @Override
  30.         public int hashCode() {
  31.                 final int prime = 31;
  32.                 int result = 1;
  33.                 result = prime * result + age;
  34.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  35.                 return result;
  36.         }

  37.         @Override
  38.         public boolean equals(Object obj) {
  39.                 if (this == obj)
  40.                         return true;
  41.                 if (obj == null)
  42.                         return false;
  43.                 if (getClass() != obj.getClass())
  44.                         return false;
  45.                 Person other = (Person) obj;
  46.                 if (age != other.age)
  47.                         return false;
  48.                 if (name == null) {
  49.                         if (other.name != null)
  50.                                 return false;
  51.                 } else if (!name.equals(other.name))
  52.                         return false;
  53.                 return true;
  54.         }
  55. // 重写compareTo()方法
  56.         @Override
  57.         public int compareTo(Person p) {
  58.                 int num = this.age - p.age;
  59.                 int num2 = num == 0 ? this.name.compareTo(p.name) : num;
  60.                 return num2;
  61.         }
  62. }
复制代码



回复 使用道具 举报
表示还只学了数组,要不也用数组写个!嘿嘿

点评

呵呵,数组也有。好好学,加油!  发表于 2015-7-21 15:45
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马