我们通过Collections.unmodifiableX来得到只读容器,因为容器被设为只读的,所以必须填入有意义的数据之后才进行设置

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set; /*
* 创建只读容器
*/
public class Test{
public static Collection<String> data = new ArrayList<String>(Arrays.asList("AAA BBB CCC DDD".split(" ")));
public static void main(String[] args) {
Collection<String> c = Collections.unmodifiableCollection(data);
System.out.println(c);
//c.add("EEE");
List<String> list = Collections.unmodifiableList(new ArrayList<String>(data));
System.out.println(list);
//list.add("EEE"); Set<String> s = Collections.unmodifiableSet(new HashSet<String>(data));
System.out.println(s);
//s.add("EEE");
/*
Collections.unmodifiableSortedMap(m);
Collections.unmodifiableMap(m);
Collections.unmodifiableSortedMap(m);
*/
} }

  

我们可以通过Collections.synchronizedX来创建线程同步的容器

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set; /*
* 创建同步容器
*/
public class Test{
public static Collection<String> data = new ArrayList<String>(Arrays.asList("AAA BBB CCC DDD".split(" ")));
public static void main(String[] args) {
Collection<String> c = Collections.synchronizedCollection(data);
List<String> list = Collections.synchronizedList(new ArrayList<String>(data));
list.add("AAA"); list.add("BB");
/*
* Collections.synchronizedMap(m);
* Collections.synchronizedSortedMap(m);
* Collections.synchronizedSet(s);
* Collections.synchronizedSortedSet(s);
*/
} }

  

Java中创建只读容器,同步容器的更多相关文章

  1. Java中创建操作文件和文件夹的工具类

    Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  2. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...

  3. Java中创建线程的三种方式以及区别

    在java中如果要创建线程的话,一般有3种方法: 继承Thread类: 实现Runnable接口: 使用Callable和Future创建线程. 1. 继承Thread类 继承Thread类的话,必须 ...

  4. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  5. Java中创建实例化对象的几种方式

    Java中创建实例化对象有哪些方式? ①最常见的创建对象方法,使用new语句创建一个对象.②通过工厂方法返回对象,例:String s =String.valueOf().(工厂方法涉及到框架)③动用 ...

  6. Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  7. Java中创建的对象多了,必然影响内存和性能

    1, Java中创建的对象多了,必然影响内存和性能,所以对象的创建越少越好,最后还要记得销毁.

  8. java 中创建线程有哪几种方式?

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行 ...

  9. Java中创建泛型数组

    Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...

随机推荐

  1. Selenium+Java元素定位之三

    首先自己先准备一个表格代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  2. test examples/test scripts

    //https://www.getpostman.com/docs/v6/postman/scripts/test_examples //Setting an environment variable ...

  3. myeclipse自定义JSP模板

  4. swoole udp

    server.php <?php $server = new swoole_server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); ...

  5. Shell脚本实现每个工作日定时执行指定程序

    我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序.那么有没有办法实现这一功能呢?答案是肯定的.我们可以运用Shell脚本简单实现这一功能. 原理很简单,Shell脚本内部 ...

  6. Linux基础命令---more

    more 将内容较长的文本文件内容分屏显示,支持定位关键字.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         ...

  7. linux 中的定时任务crontab使用方法

    linux 中的定时任务crontab使用方法: 切换到root用户,sudo su root (可以设置成不需要输入密码) sudo su - (需要输入当前帐号的密码才能进入.) crontab ...

  8. ACM题目————Sunscreen

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  9. P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    P2880 [USACO07JAN]平衡的阵容Balanced Lineup RMQ RMQ模板题 静态求区间最大/最小值 (开了O2还能卡到rank9) #include<iostream&g ...

  10. Json解析类

      Json解析类 定义两个辅助类 public class JSONObject : Dictionary<string, object> { } public class JSONAr ...