您的位置:首页 > 编程语言 > Java开发

操作系统的工具类Collections

2016-09-18 10:42 483 查看
一 Collections介绍

1 Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作。

2 Collections还提供了将集合对象设置不可变、对集合对象实现同步控制等方法。

 

二 排序操作

1 代码示例

Java代码  

import java.util.*;  

  

public class SortTest  

{  

    public static void main(String[] args)  

    {  

        ArrayList nums = new ArrayList();  

        nums.add(2);  

        nums.add(-5);  

        nums.add(3);  

        nums.add(10);  

        System.out.println(nums); // 输出:[2, -5, 3, 10]  

        Collections.reverse(nums); // 将List集合元素的次序反转  

        System.out.println(nums); // 输出:[10, 3, -5, 2]  

        Collections.sort(nums); // 将List集合元素的按自然顺序排序  

        System.out.println(nums); // 输出:[-5, 2, 3,10]  

        Collections.shuffle(nums); // 将Li
4000
st集合元素的按随机顺序排序  

        System.out.println(nums); // 每次输出的次序不固定  

    }  

}  

2 运行结果

[2, -5, 3, 10]

[10, 3, -5, 2]

[-5, 2, 3, 10]

[-5, 10, 3, 2]

3 代码说明 下载


上面代码演示了Collections类常用的排序操作。

 

三 查找和替换操作

1 代码示例 下载


Java代码  

import java.util.*;  

  

public class SearchTest  

{  

    public static void main(String[] args)  

    {  

        ArrayList nums = new ArrayList();  

        nums.add(2);  

        nums.add(-5);  

        nums.add(3);  

        nums.add(10);  

        System.out.println(nums); // 输出:[2, -5, 3, 10]  

        System.out.println(Collections.max(nums)); // 输出最大元素,将输出13  

        System.out.println(Collections.min(nums)); // 输出最小元素,将输出-5  

        Collections.replaceAll(nums , 10 , 1); // 将nums中的0使用1来代替  

        System.out.println(nums); // 输出:[2, -5, 3, 1]  

        // 判断-5在List集合中出现的次数,返回1  

        System.out.println(Collections.frequency(nums , -5));  

        Collections.sort(nums); // 对nums集合排序  

        System.out.println(nums); // 输出:[-5, 1,2, 3]  

        //只有排序后的List集合才可用二分法查询,输出3  

        System.out.println(Collections.binarySearch(nums , 3));  

    }  

}  

2 运行结果

[2, -5, 3, 10]

10

-5

[2, -5, 3, 1]

1

[-5, 1, 2, 3]

3

3 代码说明 下载

上面代码演示了Collections工具类的查找和替换操作。

 

四 同步操作

1 代码示例 下载


Java代码  

import java.util.*;  

  

public class SynchronizedTest  

{  

    public static void main(String[] args)  

    {  

        // 下面程序创建了四个线程安全的集合对象  

        Collection c = Collections.synchronizedCollection(new ArrayList());  

        List list = Collections.synchronizedList(new ArrayList());  

        Set s = Collections.synchronizedSet(new HashSet());  

        Map m = Collections.synchronizedMap(new HashMap());  

    }  

}  

2 代码说明

在上面代码中,直接将新创建的集合对象传给了Collections的synchronizedXxx方法,这样就可以直接获取List,Set,Map的线程安全版本。

 

五设置不可变集合

1 代码示例 下载


Java代码  

import java.util.*;  

  

public class UnmodifiableTest  

{  

    public static void main(String[] args)  

    {  

        // 创建一个空的、不可改变的List对象  

        List unmodifiableList = Collections.emptyList();  

        // 创建一个只有一个元素,且不可改变的Set对象  

        Set unmodifiableSet = Collections.singleton("疯狂Java讲义");  

        // 创建一个普通Map对象  

        Map scores = new HashMap();  

        scores.put("语文" , 80);  

        scores.put("Java" , 82);  

        // 返回普通Map对象对应的不可变版本  

        Map unmodifiableMap = Collections.unmodifiableMap(scores);  

        // 下面任意一行代码都将引发UnsupportedOperationException异常  

        unmodifiableList.add("测试元素");   //①  

        unmodifiableSet.add("测试元素");    //②  

        unmodifiableMap.put("语文" , 90);   //③  

    }  

}  

 

2 运行结果

E:\test\Java\Java8\Collections\src>java UnmodifiableTest

Exception in thread "main" java.lang.UnsupportedOperationException

        at java.util.AbstractList.add(Unknown Source)

        at java.util.AbstractList.add(Unknown Source)

        at UnmodifiableTest.main(UnmodifiableTest.java:20)

 

3 代码说明

最后3行代码试图修改集合元素,都会引发UnsupportedOperationException异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息