`
cakin24
  • 浏览: 1396394 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

操作系统的工具类Collections

    博客分类:
  • java
阅读更多

一 Collections介绍

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

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

 

二 排序操作

1 代码示例

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); // 将List集合元素的按随机顺序排序
		System.out.println(nums); // 每次输出的次序不固定
	}
}

2 运行结果

[2, -5, 3, 10]
[10, 3, -5, 2]
[-5, 2, 3, 10]
[-5, 10, 3, 2]

3 代码说明

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

 

三 查找和替换操作

1 代码示例

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 代码示例

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 代码示例

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异常。

0
0
分享到:
评论

相关推荐

    一些java常用的工具类

    通常,这样的库会包含一系列针对特定场景的工具类,如日期时间处理、文件操作、字符串格式化、数据校验等。例如,可能会有一个DateTimeUtils类,提供日期和时间的格式化、比较和转换方法;一个FileUtils类,用于文件...

    常用工具类常用工具类.zip

    此外,`Collections`工具类提供了对集合进行操作的方法,如排序、填充、反转等。 3. **Java.util.concurrent**: 针对多线程编程,此包提供了丰富的并发工具类,如`ExecutorService`、`Future`、`Semaphore`、`...

    Java常用工具类

    3. **Apache Commons Lang**:Apache软件基金会的一个开源项目,提供了大量扩展Java语言特性的工具类,如字符串处理、数组操作、反射、枚举操作等。 - `StringUtils`:提供了丰富的字符串操作方法,如空白字符处理...

    牛逼的java常用工具类

    10. **实用工具类**:如`Arrays`类提供了对数组的各种操作,`Objects`类提供了比较和哈希函数,`Optional`类用于表示可能为null的值,这些工具类都极大地增强了代码的可读性和安全性。 以上仅是可能包含在"牛逼的...

    30个java工具类

    2. **Collections**: 针对集合框架的操作工具类,如`Collections.sort()`、`Collections.reverse()`和`Collections.max()`。 3. **FileUtils** (来自Apache Commons IO): 提供文件操作方法,如读取、写入、复制、...

    java常用工具类

    Java的`java.lang.String`类虽然已经提供了很多字符串操作的方法,但在实际开发中,`java.util.StringUtils`(来自Apache Commons Lang库)和`org.springframework.util.StringUtils`(Spring框架)等工具类提供了...

    java常用的工具类整理28个

    在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...

    Java各种工具类

    包含了集合框架(如ArrayList、LinkedList、HashSet、HashMap等)、日期时间API(如Date、Calendar、LocalDate等)、事件模型、线程管理、随机数生成器以及多种实用工具类(如Arrays、Collections、Comparator、...

    比较全的java工具类

    - `java.util.Collections`:操作集合的工具类,如排序、反转、填充等。 以上只是Java工具类的一部分,实际中还有很多实用的工具类,例如用于XML处理的`javax.xml.parsers.DocumentBuilderFactory`,用于JSON解析...

    Java常用工具类集合

    在Java编程语言中,工具类集合是一系列实用的类,它们提供了各种通用功能,帮助开发者更高效地编写代码。这些工具类通常包含在Java的`java.util`以及其他相关的包中,如`java.text`,`javax.imageio`,`javax.xml`等...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    史上最全的dotnet工具类基类大全

    在.NET中,工具类基类往往提供通用的功能,如字符串处理、日期时间操作、数学计算、文件系统操作等。这些工具类可以帮助程序员减少重复代码,提高代码的可读性和可维护性。 接下来,我们将探讨一些常见的.NET工具类...

    CSharp通用工具类.zip

    7. **系统操作**:Core.Systems可能包含操作系统相关的功能,如获取系统信息、进程管理、时间日期处理等,帮助开发者更好地与运行环境交互。 8. **集合操作**:Core.Collections可能扩展了.NET框架中的集合类,提供...

    commons-collections4-4.1.jar

    这个版本的库包含了大量对集合操作的支持,如列表、映射、队列等,提供了丰富的功能,如迭代器、工厂、比较器、堆栈、队列等工具类,以及各种算法,如排序、搜索、转换等。对于处理Excel数据,它可以帮助我们更方便...

    28个java常用的工具类源码

    4. **Collections 和 Arrays**: 这两个工具类提供了对集合和数组的各种操作,如排序、查找、填充等。 5. **Date 和 Calendar**: Date类表示特定的时间点,而Calendar是日期和时间的日历系统抽象类,提供了更复杂的...

    java常用的工具类

    `Collections`工具类提供了许多操作集合的方法,如排序、填充、查找等。`Arrays`类则提供了处理数组的各种功能,如排序、拷贝等。 4. **Java IO/NIO**: Java的输入输出系统包括了传统的IO流和NIO(New IO)流。IO流...

    Java常用工具类包包含各种常用开发工具

    - `java.util.Collections`是针对集合的工具类,包括排序、反转、查找、集合转换等。 - `java.text.SimpleDateFormat`用于日期和时间的格式化和解析。 - `java.net.URL`和`java.net.HttpURLConnection`处理HTTP...

    27个java常用的工具类

    2. **Collections**: 针对集合框架的工具类,如反转(reverse)、排序(sort)和填充(fill)等。它还提供了对集合进行不可变化(unmodifiable*)和线程安全化(synchronized*)的方法。 3. **Date/Calendar**: 这...

    java常用工具类整理

    "java常用工具类整理"这个主题涵盖了Java开发中常用的工具类,这些类在日常编程中非常实用,能大大提高开发效率。这里我们将深入探讨一些常见的Java工具类,并结合`com-jarvis-base`这个文件名,推测这是一个基础...

Global site tag (gtag.js) - Google Analytics