Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258146
  • 博文数量: 164
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 1129
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 21:55
文章分类

全部博文(164)

文章存档

2017年(2)

2015年(67)

2014年(95)

我的朋友

分类: Java

2014-05-19 10:29:03




点击(此处)折叠或打开

  1. /*
  2. 集合框架的工具类。
  3. Collections:集合框架的工具类。里面定义的都是静态方法。

  4. Collections和Collection有什么区别?
  5. Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
  6.         它有两个常用的子接口,
  7.         List:对元素都有定义索引。有序的。可以重复元素。
  8.         Set:不可以重复元素。无序。

  9. Collections是集合框架中的一个工具类。该类中的方法都是静态的
  10.         提供的方法中有可以对list集合进行排序,二分查找等方法。
  11.         通常常用的集合都是线程不安全的。因为要提高效率。
  12.         如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。




  13. */
  14. import java.util.*;
  15. class CollectionsDemo
  16. {
  17.     public static void main(String[] args)
  18.     {
  19.         sortDemo();

  20.     }



  21.     public static void binarySearchDemo()
  22.     {
  23.         List<String> list = new ArrayList<String>();

  24.         list.add("abcd");
  25.         list.add("aaa");
  26.         list.add("zz");
  27.         list.add("kkkkk");
  28.         list.add("qq");
  29.         list.add("z");
  30.         Collections.sort(list,new StrLenComparator());

  31.         sop(list);

  32.         //int index = Collections.binarySearch(list,"aaaa");
  33.         //int index = halfSearch(list,"cc");
  34.         int index = halfSearch2(list,"aaaa",new StrLenComparator());
  35.         sop("index="+index);
  36.     }

  37.     public static int halfSearch(List<String> list,String key)
  38.     {
  39.         int max,min,mid;
  40.         max = list.size()-1;
  41.         min = 0;

  42.         while(min<=max)
  43.         {
  44.             mid = (max+min)>>1;// /2;

  45.             String str = list.get(mid);

  46.             int num = str.compareTo(key);
  47.             if(num>0)
  48.                 max = mid -1;
  49.             else if(num<0)
  50.                 min = mid + 1;
  51.             else
  52.                 return mid;
  53.         }
  54.         return -min-1;
  55.     }

  56.     public static int halfSearch2(List<String> list,String key,Comparator<String> cmp)
  57.     {
  58.         int max,min,mid;
  59.         max = list.size()-1;
  60.         min = 0;

  61.         while(min<=max)
  62.         {
  63.             mid = (max+min)>>1;// /2;

  64.             String str = list.get(mid);

  65.             int num = cmp.compare(str,key);
  66.             if(num>0)
  67.                 max = mid -1;
  68.             else if(num<0)
  69.                 min = mid + 1;
  70.             else
  71.                 return mid;
  72.         }
  73.         return -min-1;
  74.     }

  75.     public static void maxDemo()
  76.     {
  77.         List<String> list = new ArrayList<String>();

  78.         list.add("abcd");
  79.         list.add("aaa");
  80.         list.add("zz");
  81.         list.add("kkkkk");
  82.         list.add("qq");
  83.         list.add("z");
  84.         Collections.sort(list);
  85.         sop(list);
  86.         String max = Collections.max(list/*,new StrLenComparator()*/);
  87.         sop("max="+max);
  88.     }

  89.     public static void sortDemo()
  90.     {
  91.         List<String> list = new ArrayList<String>();

  92.         list.add("abcd");
  93.         list.add("aaa");
  94.         list.add("zz");
  95.         list.add("kkkkk");
  96.         list.add("qq");
  97.         list.add("z");
  98.         
  99.         sop(list);

  100.         //Collections.sort(list);
  101.         Collections.sort(list,new StrLenComparator());
  102.         //Collections.swap(list,1,2);
  103.         sop(list);
  104.         
  105.     }

  106.     public static void sop(Object obj)
  107.     {
  108.         System.out.println(obj);
  109.     }
  110. }


  111. class StrLenComparator implements Comparator<String>
  112. {
  113.     public int compare(String s1,String s2)
  114.     {
  115.         if(s1.length()>s2.length())
  116.             return 1;
  117.         if(s1.length()<s2.length())
  118.             return -1;
  119.         return s1.compareTo(s2);
  120.     }
  121. }
  122. /*
  123. class Student
  124. {
  125. }
  126. list.add(new Student());

  127. public static > void sort(List list)
  128. {
  129.     
  130. }
  131. */

阅读(821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~