概述:
1.Collections(注意不是Collection,而是Collections,多了一个s)
2.它是一个集合工具类
3.方法分类:常规操作(查找,最大,最小等)、排序、线程安全(同步)操作、不可变集合
package com.cxy.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; /** * @author peter */ public class CollectionsTest { public static void main(String[] args) { List l=new ArrayList(); l.add(100); l.add(-66); l.add(0); l.add(88); System.out.println("list:"+l); Collections.reverse(l); System.out.println("反转后的list:"+l); Collections.shuffle(l); //随机排序,洗牌 System.out.println("乱序后的list:"+l); Collections.swap(l, 1, 3); System.out.println("互换序号是1,3元素后的list:"+l); Collections.sort(l); //这里是个自然排序,更多排序内容请参见本博客中的《JAVA应用 之 排序》 System.out.println("排序后的list:"+l); Collections.binarySearch(l, 88); //二分查找,必须保证list处于有序状态,查询成功返回序号,查不到返回负数 System.out.println("list中最小的元素是:"+Collections.min(l)); System.out.println("list中最大的元素是:"+Collections.max(l)); //上面两个方法 是自然排序,当然您可以自己实现一个Comparator的实现类作为第二个参数,具体见《JAVA应用 之 排序》 l.add(88); //88(第二个参数)在list(第一个参数)出现过多少次 System.out.println("88在list中出现了:"+Collections.frequency(l, 88)+"次"); Collections.replaceAll(l, 88, 66); //将88用66去替代 System.out.println("替代后的list:"+l); Collections.fill(l, 66); //使用66(第二个参数)替换list中的所有元素。 System.out.println("list所有元素都被替换成为66:"+l); //下面写法的意思是创建一个l这么大的l1,不这么写会报异常,因为copy的时候不会自动扩容 List l1=new ArrayList(Arrays.asList(new Object[l.size()])); Collections.copy(l1, l); System.out.println("拷贝l的l1:"+l1); System.out.println("l和l1是否相等?"+l.equals(l1)); System.out.println("l和l1是否是一个引用?"+ (l==l1)); l1=l; System.out.println("l和l1是否相等?"+l.equals(l1)); System.out.println("l和l1是否是一个引用?"+ (l==l1)); l1=new ArrayList(l); //这个是一个浅拷贝,l和l1的引用虽然不同,但是l和l1内部的元素引用还是一样的 System.out.println("l和l1是否相等?"+l.equals(l1)); System.out.println("l和l1是否是一个引用?"+ (l==l1)); //上面的问题有些复杂 以后形成一个专题讲解 //创建一个类型安全的集合,下面的意思是这个集合只能是再添加Integer类型数据 l.add("abc"); //现在还没事~ try { Collections.checkedList(l, Integer.class).add("abc"); }catch(Exception e) { System.out.println("类型安全操作后,当你再试图添加非Integer类型数据时 发生了异常"); } System.out.println("======================"); /* 注意常用的这些集合(HashSet、HashMap、ArrayList、TreeMap、TreeSet、LinkedList等), * 都不是线程安全的,如果您的程序是在多线程环境下 并且有可能会同时修改同一个集合,那么 * 您就需要使用Collections.synchronizedXxx 方法来保证线程安全 */ List sl=Collections.synchronizedList(new ArrayList()); Map sm=Collections.synchronizedMap(new HashMap()); Set ss=Collections.synchronizedSet(new HashSet()); Set sts=Collections.synchronizedSortedSet(new TreeSet()); /* 不可变集合(空集合、指定元素集合、不可变状态) * 1.使用Collections.emptyXxx 方法来创建一个不可变化的空集合 * 2.空不可变集合的意义:不会因为赋值null那样带来不可预期的异常,个人理解就是初始化的最佳实践。 * 3.指定元素集合:返回一个只包含指定元素的集合,同时也是不可变化的集合 * 应用:创建一个不可变化的特殊对象集合,例如:管理员集合,这样这个管理员对象就可以拥有一些集合的方法了 * 例如:我判断一些这个用户对象是否是管理员(adminList.contains(user)) * 4.不可变状态:获得这个集合的不可变试图(只读) * 3.这里之用list举例,其他集合类似 */ List<String> el=Collections.emptyList(); System.out.println(el.isEmpty()); try { el.add("1"); //如果试图改变它 那么就会抛出UnsupportedOperationException异常 }catch(Exception e) { System.out.println("UnsupportedOperationException"); } List<String> el1=null; //通常我们可能习惯这样定义一个list try { el1.contains("abc"); //可能在某个地方我们不小心的这样用了(假设这个存在于一个低概率发生的地方) }catch(Exception e) { System.out.println("null异常"); } List<String> singletonL=Collections.singletonList("abcd"); System.out.println(singletonL); //通过下面的方式就能得到一个不可变化的(只读)集合(视图的感觉,官方其实也是这么介绍的) List<String> listView=Collections.unmodifiableList(l); } }
相关推荐
在Java中,Collection是最基础的接口,它是所有集合类的父接口。Collection接口又分为两种主要的子接口:List和Set。List接口代表有序的集合,允许有重复的元素,例如ArrayList和LinkedList。Set接口则存储不重复的...
Java Collections框架是Java平台的标准库之一,它为开发人员提供了强大的数据结构支持。Java Collections框架设计优雅且功能强大,它不仅简化了开发人员处理集合对象的方式,还提高了程序的可读性和可维护性。本书...
这些集合是Java编程的基础,对于任何Java开发者来说都是必不可少的知识。 1. **ArrayList**: 这是一个基于动态数组的集合,提供了随机访问元素的高效性能。通过索引访问元素,插入和删除元素时的效率相对较低,因为...
总之,《APress - Java Collections》一书不仅详尽地介绍了Java集合框架的基础知识,还深入探讨了如何根据具体需求选择和优化集合类,以及如何自定义新的集合实现。通过阅读和实践,读者将能更加熟练地掌握Java集合...
本资料 "[Java泛型和集合].(Java.Generics.and.Collections).Maurice.Naftalin&Philip.Wadler.文字版" 由知名专家Maurice Naftalin和Philip Wadler编著,提供了关于这些主题的深入理解。 **Java泛型** 是自Java...
本资源《Data Structures and the Java Collections Framework》旨在深入讲解这两个主题,帮助开发者更好地理解和应用它们。 数据结构是指在内存中组织数据的方式,它决定了数据的存储和访问效率。常见的数据结构...
这份"JAVA基础PPT下载"提供了一套基础的Java学习资源,适用于初学者,旨在引导新手进入Java的世界。以下是对这份教程可能包含的一些核心知识点的详细阐述: 1. **Java概述**:首先会介绍Java的历史背景,它的创始人...
本教程全面介绍了Java Collections Framework的基础知识,涵盖了集合的基本概念、核心接口、具体实现类以及相关的算法支持等内容。通过学习这些知识,开发者将能够更加熟练地使用Java中的集合类,提高代码的效率和可...
Java集合框架是Java编程中不可或缺的部分,而Collections工具类则是这个框架中的一个重要工具,它提供了大量静态方法,用于操作各种集合接口(如List、Set、Queue等)的实例。本教程将深入探讨Collections工具类中的...
【JAVA基础课程讲义】 第一章 **JAVA入门** 计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程。高级语言中,JAVA以其独特的魅力和优势脱颖而出。JAVA的发展简史可追溯到1995年,由Sun Microsystems...
Java Collections Framework是Java标准库的核心组成部分之一,它提供了一套高级数据结构来存储和操作对象。这些数据结构包括列表(List)、集(Set)、映射(Map)等,并且它们之间存在继承关系。了解并熟练运用Java集合...
以上只是Java基础知识的冰山一角,深入学习Java还包括设计模式、网络编程、数据库连接、反射、注解、NIO等高级主题。Java的强大之处在于它的全面性、稳定性和广泛的应用场景,使其成为软件开发的首选语言。