文档章节

Java基础-----集合工具类Collections

baibuxiha
 baibuxiha
发布于 2016/03/23 21:06
字数 630
阅读 174
收藏 5
          Collections类是Java提供的对集合进行操作的工具类;这个类不能生成实例,因为构造器是private;提供的方法都是static方法;
1、提供空的List、Set、Map,不能够进行任何操作,因为它们都是Collections类中实现的private static class,类名都已Empty开头;没有提供添加、修改、删除等操作;进行相关操作会抛出异常java.lang.UnsupportedOperationException
public class ListTest {

	public static void main(String[] args) {
	//	AtomicInteger
		List empty = Collections.EMPTY_LIST;
		empty.add(1);
	}

}
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at cn.trip.core.servlet.ListTest.main(ListTest.java:11)

   Collections.EMPTY_LIST、

Collections.EMPTY_MAP、

Collections.EMPTY_SET

2、提供线程安全的Collection、List、Map、Set、SortedMap、SortedSet;Collections类中都有对应的private static class,类名都已Synchronized开头;

实现原理:部分方法调用是使用synchronized锁住互斥锁对象mutex;synchronized (mutex) ;

如:

public static <T> Collection<T> synchronizedCollection(Collection<T> c)
public static <T> Set<T> synchronizedSet(Set<T> s)
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
public static <T> List<T> synchronizedList(List<T> list)
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
3、提供只读的Collection、List、Map、Set、SortedMap、SortedSet;Collections类中都有对应的private static class,类名都已Unmodifiable开头

实现原理:对add、remove、set等对集合进行修改操作的方法抛出异常 throw new UnsupportedOperationException();

如:

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
public static <T> List<T> unmodifiableList(List<? extends T> list)
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
4、反转指定List中的元素的顺序。

public static void reverse(List<?> list)
public class ListTest {

	public static void main(String[] args) {
           ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("未取反前"+list);
	   Collections.reverse(list);
	   System.out.println("取反后"+list);
	}

}
未取反前[1, 2, 3, 4, 4, 5]
取反后[5, 4, 4, 3, 2, 1]
5.替换List中的指定元素为新元素的值
public static <T> boolean replaceAll(List<T> list,T oldVal,T newVal)
public class ListTest {

	public static void main(String[] args) {
	  ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("替换前"+list);
	   Collections.replaceAll(list, 4, 8);
	   System.out.println("替换后"+list);
	}

}
替换前[1, 2, 3, 4, 4, 5]
替换后[1, 2, 3, 8, 8, 5]

6.替换List所有元素

public static <T> void fill(List<? super T> list,T obj)
public class ListTest {

	public static void main(String[] args) {
           ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("替换前"+list);
	   Collections.fill(list, 0);
	   System.out.println("替换后"+list);
	}

}
替换前[1, 2, 3, 4, 4, 5]
替换后[0, 0, 0, 0, 0, 0]


© 著作权归作者所有

baibuxiha
粉丝 6
博文 67
码字总数 33393
作品 0
私信 提问
Immutable Collections for Java 1.6 发布

Immutable Collections for Java 1.6 发布,此版本提升了系统性能;减少了哈希映射和集合的内存占用;允许在 foreach 循环中使用 Cursors。 Immutable Collections for Java (Java不变集合类...

oschina
2014/04/13
640
0
Google的Guava类库简介(转)

说明:信息虽然有点旧,至少可以先了解个大概。 Guava是一个Google的基于Java的类库集合的扩展项目,包括collections, caching, primitives support, concurrency libraries, common annotat...

easonjim
2017/11/01
0
0
Google Guava Collections 使用介绍

Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framework 的增强和扩展。每个 Java 开发者都会在工作中使用各种数据结构,很多情况下 Java Collections F...

毒性逆转
2011/11/17
402
1
Guava学习笔记:Google Guava 类库简介

Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这......

长平狐
2013/06/17
1K
0
关于 Java Collections API 您可能不知道的 5 件事

对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其所有缺点的一个非常需要的替代品。将 Collections 主要与 联系到一起本身没有错,但是对于那些有探索精神的人来说,...

红薯
2010/05/26
503
1

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部