1. 程式人生 > >操作集合的工具類Collections

操作集合的工具類Collections

  Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類裡提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了將集合物件設定為不可變,對集合物件實現同步控制等方法。
  

  • 排序操作
    Collections提供瞭如下幾個方法用於對List集合元素進行排序。
// 當引數為正數時,將list集合的後引數個元素“整體”移動到前面,當引數為負數時,將list集合的前引數個元素“整體”移動到後面
Collections.rotate(list, 2);
// 反轉指定列表中元素的順序。
Collections.reverse(list);
// 對List集合元素進行隨機排序。
Collections.shuffle(list); // 根據元素的自然順序對指定list集合的元素按升序進行排序 Collections.sort(list); // 根據指定Comperator產生的順序對List集合元素進行排序。 Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.compareTo(o2) > 0) return -1; return 0; } }); // 將指定List集合中的i處元素和j處元素進行交換。
Collections.swap(list, 0, 7); // 當引數為正數時,將list集合的後引數個元素“整體”移動到前面,當引數為負數時,將list集合的前引數個元素“整體”移動到後面 Collections.rotate(list, 2);
  • 查詢、替換操作
    Collections還提供瞭如下用於查詢、替換集合元素的常用方法。
//使用一個新值"9"替換List物件的所有舊值"5"。
Collections.replaceAll(list,"5","9");
// 返回指定集合中指定元素的出現次數。
Collections.frequency(list,"9");
// 根據Comparator指定的順序,返回給集合中的最小元素。
Collections.min(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2) > 0) return -1; return 0; } }); // 根據元素的自然順序,返回給集合中的最小元素。 Collections.min(list); // 根據Comparator指定的順序,返回給集合中的最大的元素。 Collections.max(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2) > 0) return -1; return 0; } }); // 根據元素的自然順序,返回給定集合中的最大元素。 Collections.max(list); // 使用二分法搜尋指定的List集合,用來獲得指定物件key在List集合中的索引。list必須有序 Collections.binarySearch(list,"3"); // 使用指定元素obj替換指定List集合中的所有元素。 Collections.fill(list,"9");
  • 同步控制
      Collections類中提供了多個synchronizedXxx()方法,該方法可以將指定的集合包裝成執行緒同步的集合,從而可以解決多執行緒併發訪問集合時的多執行緒安全問題。
      Java中常用的集合框架中的實現類,HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap、和TreeMap都是執行緒不安全的。如果有多個執行緒訪問它們,而且有超過一個的執行緒試圖修改它們,則可能會出現錯誤。Collections提供了多個靜態方法可以把它們包裝成執行緒同步的集合。
Collection<String> collection = Collections.synchronizedCollection(new ArrayList<String>());
List<String> list = Collections.synchronizedList(new ArrayList<String>());
Set<String> set = Collections.synchronizedSet(new HashSet<String>());
Map<String,String> map = Collections.synchronizedMap(new HashMap<String,String>());

通過synchronizedXxx()方法,就可以直接獲取List、Set、Map的執行緒安全實現版本。

  • 設定不可變集合
    Collections提供如下三個類方法來返回一個不可變的集合。
    1.emptyXxx():返回一個空的,不可變的結合物件,此處的集合即可以是List,也可以是Set,還可以是Map。
    2.singletonXxx():返回一個包含指定物件的,不可變的集合物件,此處的集合即可以是List,也可以是Set,還可以是Map。
    3.unmodifiableXxx():返回指定集合物件的不可變檢視,此處的集合既可以是List,也可以是Set,還可以是Map。
public static void test5(){
    //建立一個空的,不可變的Set物件
    Set set = Collections.emptySet();
    //建立一個只包含特定物件的List集合
    List<String> list = Collections.singletonList("abc");
    //建立一個普通的Map集合,將Map集合轉變為一個不能在更改的Map物件
    Map map = new HashMap();
    map.put("123", "abc");
    map.put("456", "def");
    Map unmodifiableMap =Collections.unmodifiableMap(map);
}

相關推薦

Java常用(五)之集合工具Collections

可變集合 並發 nts oid element 出現的次數 ole 最小 概述 前言    Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類提供了大量方法對集合進行排序、查詢和修改等操作,     還提供了將集合對象置為不可

集合工具Collections.sort()排序方法

用Collections工具類的sort()方法比較的元素 Collections提供了過載的sort方法:     1.Collections.sort(list<T>)//用元素實現

操作集合工具Collections

  Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類裡提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了將集合物件設定為不可變,對集合物件實現同步控制等方法。    排序操作 Collection

Map、List、Set及Collections集合工具的綜合案例

  給定6名學生的考試分數錄入到地圖中,以學號作為金鑰,分數作為值; 列印該6名學生及對應的分數;並按分數顯示前三名學員學號與成績(選做題) 要求:綜合地圖,列表中,設定應用---使用集合工具對列表排序 問題: 1:假設分數不存在重複的(不做有重複分

java學習筆記:集合框架的工具Collections

Collections:裡面定義的都是一些操作collection物件的靜態方法 List list=new ArrayList(); … 1.自然排序: Collections.sort(list); 2.倒序排序:Collections.sort(list,

Set集合及其子集合HashSet 、LinkedHashSet、TreeSet;Map集合及其子集合HashMap、Hashtable;Collections(集合工具);IO概述和異常

Set集合 TreeSet的排序例項 需求:儲存自定義物件到TreeSet集合中,並遍歷 package OBT; public class Student implements Comparable<Student>{ String

[Google Guava] 2.3-強大的集合工具:java.util.Collections中未包含的集合工具

原文連結 譯文連結 譯者:沈義揚,校對:丁一 尚未完成: Queues, Tables工具類 任何對JDK集合框架有經驗的程式設計師都熟悉和喜歡java.util.Collections包含的工具方法。Guava沿著這些路線提供了更多的工具方法:適用於所有集合的靜態方法。這是Guava最流行和

Collections 集合工具

1) 排序(Sort)使用sort方法可以根據元素的自然順序 對指定列表按升序進行排序。列表中的所有元素都必須實現 Comparable介面。此列表內的所有元素都必須是使用指定比較器可相互比較的double array[] = {112, 111, 23, 456, 231 };for (int i = 0;

Commons-Collections 集合工具的使用

package com.bjsxt.others.commons; import java.util.ArrayList; import java.util.List; import org.apache.commons.collections4.Predicate; import org

靜態匯入、可變引數、Collections集合工具集合巢狀

靜態匯入和可變引數 在導包的過程中我們可以直接匯入靜態部分,這樣某個類的靜態成員就可以直接使用了。在原始碼中經常會出現靜態匯入。 import static java.lang.System.out; public class Demo03 { public static void main(

Java集 _集合工具Collections

掌握Collections 與 Collection 介面的區別 掌握Collections 類中提供的主要操作方法 在面試題目中有可能會問這樣一個問題,請回答, Collections 和 Collection 的關係。 Collections 類與 Collectio

Collections集合工具

println private hashset shuf bsp [] 自定義類 ole 工具 Collections集合工具類,專門用來對集合進行操作的。 常用方法: public static<T> boolean addAll(Collection

Collections集合工具的方法

基本數據類型 接口 ons 一個 bubuko 字母 shuff str ole addAll & shuffle: 返回類型為boolean類型,執行完操作不接收也行; 其中,靜態方法,與對象無關,類名點方法名直接調用; 點點點為可變參數,隨便填寫幾

金額操作工具

ive char acea log rst reverse this emp arr 1 public class MoneyUtil { 2 private static final Map<String, String> zeroToNin

List操作工具

row exceptio val 字符串 rem 字符 sem != err 1 /** 2 * <p>list操作的工具類</p> 3 */ 4 public class ListUtil { 5 /** 6

關於IP操作工具

*** equal rac 獲取本地ip pan -i str upper forward 1 public class IPUtil { 2 /** 3 * 獲取本地IP地址 4 * @return 5 */

文件操作工具

direct str 方式 cnblogs 獲取文件 exception 內容 source let 相關代碼如下:包含創建文件,創建目錄,創建壓縮文件,獲取文件等相關操作。 public class FileUtil { private static fina

java與javascript對cookie操作工具

check cells ram tco expire turn get servle request Java對cookie的操作 package cn.utils; import java.util.HashMap; import java.util.Map;

?集合工具使用線程

集合 線程 集合工具類使用線程1. hashmap源碼解析與並發可能遇見的問題1.HashMap中的幾個重要變量static final int DEFAULT_INITIAL_CAPACITY = 16; //默認初始容量,必須是2的n次方 static final int MAXIMUM_

集合工具CollectionUtils、ListUtils、SetUtils、MapUtils的使用

inter lis lec println clas 發現 pub sem xtend 主要用它的isEmpty(final Collection<?> coll)靜態方法來判斷一個給定的集合是否為null或者是否長度為0。最近才發現此工具類還可以取集合的交集、