posts - 0,  comments - 0,  trackbacks - 0

          Java.util.Collections 類包的學(xué)習(xí)

          1. 描述:

          1.1 概述

          java.util.Collections 類包含很多有用的方法,可以使程序員的工作變得更加容易,但是這些方法通常都沒有被充分地利用。 Javadoc 給出 Collections 類最完整的描述:“這一個(gè)類包含可以操作或返回集合的專用靜態(tài)類。

          1.2 所含方法

          Iterator, ArrayList, Elements, Buffer, Map,Collections

          ?

          列子:

          import java.util.ArrayList;

          import java.util.Collection;

          import java.util.Collections;

          import java.util.Comparator;

          import java.util.List;

          ?

          public class CollectionsSort {

          public CollectionsSort() {

          ?

          }

          ?

          public static void main(String[] args) {

          double array[] = {111, 111, 23, 456, 231 };

          List list = new ArrayList();

          List li = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          //list.add(""+array[i]);

          }

          double arr[] = {111};

          for(int j=0;j<arr.length;j++){

          li.add(new Double(arr[j]));

          }

          }

          ?

          2. 具體操作

          1) 排序 (Sort)

          使用 sort 方法可以根據(jù)元素的自然順序 對(duì)指定列表按升序進(jìn)行排序 。列表中的所有元素都必須實(shí)現(xiàn) Comparable 接口。此列表內(nèi)的所有元素都必須是使用指定比較器可相互比較的

          double array[] = {112, 111, 23, 456, 231 };

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections.sort(list);

          for (int i = 0; i < array.length; i++) {

          System.out.println(list.get(i)); ?

          }

          // 結(jié)果: 112,111,23,456,231

          ?

          2) 混排( Shuffling

          混排算法所做的正好與 sort 相反 : 它打亂在一個(gè) List 中可能有的任何排列的蹤跡。也就是說,基于隨機(jī)源的輸入重排該 List, 這樣的排列具有相同的可能性(假設(shè)隨機(jī)源是公正的)。這個(gè)算法在實(shí)現(xiàn)一個(gè)碰運(yùn)氣的游戲中是非常有用的。例如,它可被用來混排代表一副牌的 Card 對(duì)象的一個(gè) List 。另外,在生成測(cè)試案例時(shí),它也是十分有用的。

          Collections.Shuffling(list)

          double array[] = {112, 111, 23, 456, 231 };

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections.shuffle(list);

          for (int i = 0; i < array.length; i++) {

          System.out.println(li.get(i));

          }

          // 結(jié)果: 112,111,23,456,231

          ?

          3) 反轉(zhuǎn) (Reverse)

          使用 Reverse 方法可以根據(jù)元素的自然順序 對(duì)指定列表按降序進(jìn)行排

          序。

          Collections.reverse(list)

          double array[] = {112, 111, 23, 456, 231 };

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections. reverse (list);

          for (int i = 0; i < array.length; i++) {

          System.out.println(li.get(i));

          }

          // 結(jié)果: 231,456,23,111,112

          ?

          ?

          4) 替換所以的元素 (Fill)

          使用指定元素替換指定列表中的所有元素。

          String str[] = {"dd","aa","bb","cc","ee"};

          for(int j=0;j<str.length;j++){

          li.add(new String(str[j]));

          }

          Collections.fill(li,"aaa");

          for (int i = 0; i < li.size(); i++) {

          System.out.println("list[" + i + "]=" + li.get(i));

          ?

          }

          // 結(jié)果: aaa,aaa,aaa,aaa,aaa

          ?

          5) 拷貝 (Copy)

          用兩個(gè)參數(shù),一個(gè)目標(biāo) List 和一個(gè)源 List, 將源的元素拷貝到目標(biāo),并覆蓋它的內(nèi)容。目標(biāo) List 至少與源一樣長(zhǎng)。如果它更長(zhǎng),則在目標(biāo) List 中的剩余元素不受影響。

          Collections.copy(list,li): 后面一個(gè)參數(shù)是目標(biāo)列表 , 前一個(gè)是源列表

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          List li = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          double arr[] = {1131,333};

          String str[] = {"dd","aa","bb","cc","ee"};

          for(int j=0;j<arr.length;j++){

          li.add(new Double(arr[j]));

          }

          Collections.copy(list,li);

          for (int i = 0; i <list.size(); i++) {

          System.out.println("list[" + i + "]=" + list.get(i));

          }

          // 結(jié)果: 1131,333,23,456,231

          ?

          6) 返回 Collections 中最小元素 (min)

          根據(jù)指定比較器產(chǎn)生的順序,返回給定 collection 的最小元素。 collection 中的所有元素都必須是通過指定比較器可相互比較的

          Collections.min(list)

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections.min(list);

          for (int i = 0; i <list.size(); i++) {

          System.out.println("list[" + i + "]=" + list.get(i));

          }

          // 結(jié)果: 23

          7) 返回 Collections 中最小元素 (max)

          根據(jù)指定比較器產(chǎn)生的順序,返回給定 collection 的最大元素。 collection 中的所有元素都必須是通過指定比較器可相互比較的

          Collections.max(list)

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections.max(list);

          for (int i = 0; i <list.size(); i++) {

          System.out.println("list[" + i + "]=" + list.get(i));

          }

          // 結(jié)果: 456

          ?

          8) lastIndexOfSubList

          返回指定源列表中最后一次出現(xiàn)指定目標(biāo)列表的起始位置

          int count = Collections.lastIndexOfSubList(list,li);

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          List li = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          double arr[] = {111};

          String str[] = {"dd","aa","bb","cc","ee"};

          for(int j=0;j<arr.length;j++){

          li.add(new Double(arr[j]));

          }

          Int locations = Collections. lastIndexOfSubList (list,li);

          System.out.println(“===”+ locations);

          // 結(jié)果 3

          ?

          9) IndexOfSubList

          返回指定源列表中第一次出現(xiàn)指定目標(biāo)列表的起始位置

          int count = Collections.indexOfSubList(list,li);

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          List li = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          double arr[] = {111};

          String str[] = {"dd","aa","bb","cc","ee"};

          for(int j=0;j<arr.length;j++){

          li.add(new Double(arr[j]));

          }

          Int locations = Collections.indexOfSubList(list,li);

          System.out.println(“===”+ locations);

          // 結(jié)果 1

          ?

          10) Rotate

          根據(jù)指定的距離循環(huán)移動(dòng)指定列表中的元素

          Collections.rotate(list,-1);

          如果是負(fù)數(shù),則正向移動(dòng),正數(shù)則方向移動(dòng)

          double array[] = {112, 111, 23, 456, 231 };

          List list = new ArrayList();

          for (int i = 0; i < array.length; i++) {

          list.add(new Double(array[i]));

          }

          Collections.rotate(list,-1);

          for (int i = 0; i <list.size(); i++) {

          System.out.println("list[" + i + "]=" + list.get(i));

          }

          // 結(jié)果: 111,23,456,231,112

          posted on 2007-06-01 12:05 navy 閱讀(173) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 通州市| 绩溪县| 青州市| 房山区| 芦山县| 峨山| 嘉义县| 冀州市| 邛崃市| 苏尼特左旗| 关岭| 龙游县| 巩义市| 蓬安县| 波密县| 中西区| 高邮市| 福建省| 扎兰屯市| 锡林郭勒盟| 屏南县| 宝山区| 长岭县| 临汾市| 治多县| 八宿县| 襄城县| 和平区| 墨脱县| 涟水县| 灵台县| 南溪县| 丰镇市| 桃江县| 西青区| 庐江县| 廉江市| 馆陶县| 烟台市| 陆川县| 庄浪县|