1. 程式人生 > >Map工具類

Map工具類

循環 引用類型 turn 為什麽 sum 元素 接收 rem system

Arrays工具類:
  操作數組的工具類
  工具類匯總的方法基本都是靜態的

**Arrays.toString(arr):把數組中的內容轉成字符串
**Arrays.asList(arr):數組轉集合

  數組轉成的集合不能進行添加和刪除
  因為數組的長度是固定的
  數組只能存儲對象

**list.size():集合元素個數
**list.add():添加
**list.remove():移除

/**
*
*   為什麽要數組轉集合?
*
*   集合的方法多:
*    叠代:
*    Iterator<String> ite = list.iterator();
*   while(ite.hasNext())
*   {
*    System.out.println(ite.next());
*   }
*   判斷數組是否包含某個元素:
*    list.contains(str);
*
**/

/**
*   int [] arr = {1, 2, 3};
*   List list = Aarrays.asList(arr);
*   System.out.print(list.size());
*
*   為什麽list長度為1?
*
*   數組只能存儲對象arr是個int數組
*   集合存儲的是引用類型的對象
*   因為數組是引用類型的
*   asList將arr整體作為一個對象存入集合
*   所以長度為1
*
**/

Collections工具類:
  操作集合的工具類

**Collections.sort():排序
  按照集合中對象所屬的類自身具備的比較方式進行排序的
    即int compareTo()方法
  按照自定義的比較方式對集合中的對象進行拍蘇
    實現Comparator<String>接口
    重寫compare方法
    傳入實現接口的類的對象

**Collections.reverseOrder():翻轉輸出結果
  沒有參數則翻轉默認的比較方式

/**
*
*   如何得到和比較值相反的比較方式?
*
*   Comparator com = Collections.reverseOrder(new ComByLength());
*   Collections.sort(list, com);
*
*   System.out.println(list);
*
**/

**Collections.max(list):求最值

/**
*
*   自己實現max?
*
*   public static <E extends Compare<? super E>> getMax(Clooection<? extends E> col)
*   {
*     Iterator<? extends E> ite = col.iterator();
*     E obj = ite.next();//得到集合中的一個對象
*
*      while(ite.hasNext())
*     {
*       E object = ite.next();
*       int num = obj.compareTo(object);
*       if(num < 0)
*          obj = object;
*     }
*      return obj;
*   }
*
**/

**Collections.toArray(T[] a):集合轉數組
  給定的數組長度大於集合中對象的個數,則使用給定的數組
  給定的數組長度小於集合中對象的個數,會創建一個新的數組織,數組長度和集合對象個數相同
  給定的數組長度和集合中對象個數相同
  集合轉數組可以防止數據被隨意的添加或刪除,因為數組長度是固定的

增強for()循環:

  for(數據類型 變量名; 被遍歷的數組或Collection集合)
  {

  }

  int[] arr = {12,34,5,67,7,8};

  for(int num:arr)//foreach
  {
  System.out.println(num + " ");
  }

內部執行:

  每次從數組arr中獲得一個元素,存入到num中

  List<String> list = new ArrayList<>();
  list.add("adfd");
  list.add("java");

  for(String str:list)
  {
    System.out.println(str.toUpperCase() + " ");
  }

  HashMap<String, String> map = new HashMap<>();
  map.put("001", "aaa");
  map.put("002", "bbb");

  for(String key: map.keySet())
  {
    String value = map.get(key);
    System.out.println(key + "= " + value);
  }

  或:

  for(Map.entry<String, String> en: map.entrySet())
  {
    String key = en.getKey();
    String value = map.getValue();
    System.out.println(key + "= " + value);
  }

可變參數:
  簡化書寫
  可變參數必須寫在參數列表的最後
  對應過前面固定的參數後,剩下的參數都存入可變參數

求和:
  //其實把接收的數存到數組中
  public static int add(int... a)
  {
    int sum = 0;
    for(int i = 0;i < a.length; i ++)
    {
      sum = sum + a[i];
    }
    return sum;
  }

  調用:

  int sum = add(1,2,3,4,4);
  System.out.println(sum);

靜態導入:
  import static java.util.Arrays.*;
  將Arrays的靜態方法導入進來
  使用的時候就可以略去類名,直接使用sort()
  當方法名相同時,類名不可以省略
  當類名相同時,包名不可以省

**Arrays.sort(arr):排序
**Arrays.binarySearch(arr, 21):二分查找

runtime:
  運行時
  每個Java運行程序都有一個Runtime類實例,可以獲得運行時信息
  應用程序不能自己創建運行時對象,必須通過方法返回

**getRuntime():返回當前應用程序的運行時對象
**maxMemory():返回運行時的最大內存
**gc():垃圾回收器

Map工具類