`

Collection创建不可修改的容器和同步控制的容器

 
阅读更多

1,创建一个只读的Collection或Map,有时可以带来很大的方便。创建的方式就是使用Collections.unmodifiableSortedSet

例如:

             List<String> a=Collections.unmodifiableList(

                                         new ArrayList<String>(data));

             ListIterator<String> lit=a.listIterator();

            //!     lit.add("One");    //Can't change it

在将容器设为只读之前,必须填入有意义的数据。

 

2.Collection类有办法能够自动同步整个容器,其语法和1类似。

例如:

                    Set<String> ss=Collections.synchronizedSortedSet(

                                           new TreeSet<String>());

 

3.Java容器的快速报错保护机制:

           为了防止多个进场功能同时修改同一个容器的内容,如果在你迭代便利某个容器的过程中,另一个进程介入其中,并且插入,删除或修改此容器内的某个对象时,就会抛出ConcurrentModeficationException异常。

分享到:
评论

相关推荐

    java练习题--容器使用练习

    7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如Vector、HashTable)和并发容器类(如ConcurrentHashMap、CopyOnWriteArrayList)。 8. 泛型:利用泛型在容器中存储特定类型的...

    第17章 - 深入研究容器 - Collection(List,Set,Queue)的性能测试框架(单线程中)(P501)

    这些容器是Java编程中不可或缺的一部分,用于存储和管理对象。本章将探讨如何构建一个性能测试框架来比较不同集合类型的效率。 List接口是Java中最常用的容器之一,它代表了一个有序的元素列表。ArrayList、...

    java容器(持有对象)

    某些容器如ArrayList和HashMap在并发环境下直接使用可能会导致数据不一致,这时可以考虑使用Collections.synchronizedXXX()方法进行同步,或者使用并发容器如CopyOnWriteArrayList和ConcurrentHashMap。 总之,Java...

    java Collection类整理

    Java集合框架中的`Collection`接口是所有单值容器的基础接口,它定义了基本的增删查改元素的方法。`Collection`有两个主要的子接口:`List`和`Set`。`List`接口要求元素保持特定的顺序,并允许重复元素;而`Set`接口...

    JAVA集合容器课件

    数组是固定大小的,一旦创建,长度不可变。 2. **Collection接口**:Collection是所有集合类的顶级接口,它定义了集合的基本操作,如添加、删除、查找和遍历元素。Collection接口提供了子接口,如Set和List,来...

    02-Java集合容器面试题(2020最新版)-重点.pdf

    - **方法**:可以通过`Collections.unmodifiableCollection()`方法创建一个不可变的集合视图。 #### 十一、Collection接口 - **定义**:所有集合类的根接口,定义了集合的基本操作方法。 #### 十二、List接口 - **...

    Java集合容器面试题

    List和Set的区别是:List 是有序的、可重复的集合,Set 是无序的、不可重复的集合。 Set接口 Set接口是Collection接口的子接口,提供了无序的集合操作方法,如add、remove、contains等。 说一下HashSet的实现原理...

    java Collection&Map

    - 它还提供了同步化和不可变化的集合视图生成方法,便于多线程环境和安全性要求高的场景。 4. **equals()和hashCode()方法**: - equals()方法用于判断两个对象是否逻辑相等,根据自反性、对称性、传递性、一致性...

    Java 集合框架(2-9)-Collection - ArrayList 源码解析.pdf

    ArrayList并不支持线程安全,这意味着在多线程环境下,如果不进行适当的同步控制,可能会出现数据不一致的问题。如果需要线程安全的列表,可以选择使用Vector代替ArrayList,但需要注意的是,Vector的性能通常低于...

    Java集合容器面试题(2022最新版)-重点.docx

    #### 确保集合不可修改 - 可以通过`Collections.unmodifiableList()`等方法返回一个不可变视图。 #### Collection接口 - `Collection`是所有集合的根接口,定义了集合的基本行为,如添加、删除、查找等操作。 ####...

    java项目开发总结.docx

    Java 项目开发总结 Java 项目开发总结是指在 Java 项目开发中所需具备的基本知识点和技能。...總之,Java 项目开发总结涵盖了 Java 项目开发中的所有基本知识点和技能,是 Java 开发者不可或缺的基础知识。

    Java面试题11

    - String:不可变字符串,一旦创建,就不能修改。适合创建不会改变的字符串。 - StringBuilder:可变字符串,非线程安全,适用于单线程环境中的字符串操作,效率较高。 - StringBuffer:可变字符串,线程安全,...

    A collection of resources on modern C++.zip

    9. **单元测试和持续集成**:现代开发流程中,单元测试和持续集成是不可或缺的部分。了解如何使用如Google Test等库进行C++单元测试,并结合Git和Jenkins等工具进行持续集成,可以提高代码质量。 10. **C++标准库**...

    集合小结 Collection

    - 特点:键值对的集合,键不可重复,值可以重复。 - 实现:主要包括`HashMap`、`TreeMap`等。 - `HashMap`:基于哈希表实现,提供快速的键值对操作。 - `TreeMap`:基于红黑树实现,保证键的有序性。 #### ...

    11.集合框架001-Collection接口10-12

    它还有其他子接口,如List和Set,分别代表有序可重复和无序不重复的元素集合。 **链表(LinkedList)**: 在"10-集合框架010-链表"中,可能涉及了LinkedList类的讲解。LinkedList实现了List接口,它以链表数据结构...

    超级有影响力霸气的Java面试题大全文档

    EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置。Map是一个无序的Collection,它提供了key到value的映射。 ArrayList和LinkedList是两种常用的List实现类。ArrayList实现了可变大小的...

    Java语音学习,基础教程

    Java 中的常量是指不可变的值,它们可以用 final 关键字来声明。变量则是存储数据的容器,你可以声明不同数据类型的变量,如整型(int)、浮点型(float)和字符串类型(String)。数据类型分为基本类型和引用类型,...

    Java面试题200+.docx

    7. **String与StringBuffer/Builder**:String是不可变的,每次修改都会创建新对象,而StringBuilder和StringBuffer在内部可变,适用于大量拼接操作。 8. **String对象的创建**:"i"是字面量,new "i"创建了新对象...

    关于JAVA面试的100题及其答案

    - String是不可变对象,一旦创建,就不能更改,适合不可变的字符串。 - StringBuffer是可变对象,适合在字符串拼接和修改场景,避免频繁创建新对象,提高性能。 4. **运行时异常与一般异常**: - 运行时异常是...

Global site tag (gtag.js) - Google Analytics