集合
输出集合
使用Concurrent集合
大多数真实应用程序都会处理像文件、变量、来自文件的记录或数据库结果集这样的集合。Java 语言有一个复杂的集合框架,可以使用它创建和管理各种类型的对象集合。本节将介绍最常用的集合类并帮助您开始使用它们。
Java集合简介
该系列文章是在研究 JDK7 源码过程中对于集合的学习总结。
你已经看到了如何使用 value 属性来配置基本数据类型和在你的 bean 配置文件中使用 标签的 ref 属性来配置对象引用。这两种情况下处理奇异值传递给一个 bean。现在如果你想传递多个值,如 Java Collection 类型 List、Set、Map 和 Properties,应该怎么做呢。为了处理这种情况,Spring 提供了四种类型的集合的配置元素,如下所示: 元素描述<list>
固定集合(Capped Collection)是一种尺寸固定的“循环”集合,可提供高效的创建、读取、删除等操作。这里所指的“循环”的意思是,当分配给集合的文件尺寸耗尽时,就会自动开始删除最初的文档,不需要提供任何显式的指令。 如果文档更新后增加了文档的尺寸,那么固定集合会限制对文档的更新。
drop() 方法MongoDB 利用 db.collection.drop() 来删除数据库中的集合。 语法格式drop() 命令的基本格式如下: db.COLLECTION_NAME.drop() 范例首先检查在数据库 mydb 中已有集合: >use mydbswitched to db mydb>show collectionsmycolmycollectionsystem.indexestutorialspoint>接着删除集合 mycollection。 >db.mycollection.
createCollection() 方法在 MongoDB 中,创建集合采用 db.createCollection(name, options) 方法。 语法格式createCollection() 方法的基本格式如下: db.createCollection(name, options) 在该命令中,name 是所要创建的集合名称。options 是一个用来指定集合配置的文档。 参数类型描述name字符串所要创建的集合名称options文档可选。
上图是 Java 集合类的一个接口简图。Java 集合其实是 Java 集合类的简写,集合类在 Java 中有很重要的意义。为什么需要 Java 集合类呢?数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题:我们需要该容器的长度是不确定的。我们需要它能自动排序。我们需要存储以键值对方式存在的数据。
在编写 Java 程序中,我们最常用的除了八种基本数据类型,String 对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!Java 中集合大家族的成员实在是太丰富了,有常用的 ArrayList、HashMap、HashSet,也有不常用的 Stack、Queue,有线程安全的 Vector、HashTable,也有线程不安全的 LinkedList、TreeMap 等等!
文件集合表示一组文件,Gradle 使用 FileCollection 接口表示文件集合, Gradle API 中的许多项目都实现了这个接口,例如 dependency configurations .获取 FileCollection 实例的一种方法是使用 Project.files() 方法.你可以传递任何数量的对象参数,这个方法能将你传递的对象集合转换为一组文件对象.files() 方法接收任何类型对象参数.
Groovy 为预定义的 List 和 Map 集合提供了一些操作捷径,这两个字面值都比较简单易懂,但是 Map 会有一些不同.例如,当您使用 "apply" 方法使用 plug 时,apply 会自动加上 Map 的一个参数,当您这样写 " apply plugin: 'java' "时,实际上使用的是 name 参数(name-value),只不过在 Groovy 中 使用 Map 没有 < >
Java 2 之前,Java 为对象组的存储和操作提供了特别的类比如 字典,向量,堆栈和属性。尽管这些类确实有用,它们缺少一个中心的,统一的主题。因此,你使用向量的方法和你使用属性的方法是不同的。 集合框架被设计来满足几个目标 框架需要是高性能的。基础集合(动态数组,链表,数和哈希表)是高效的。 框架需要允许不同的集合类型以类似的方式和高度的互操作性工作。
HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合。collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Queue 接口。它们有各自的特点,Set 的集合里不允许对象有重复的值,List 允许有重复,它对集合中的对象进行索引,Queue 的工作原理是 FCFS 算法(First Come, First Serve)。
LRU 缓存介绍我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。
概述我们在之前的博文中了解到关于 HashMap 和 Hashtable 这两种集合。其中 HashMap 是非线程安全的,当我们只有一个线程在使用 HashMap 的时候,自然不会有问题,但如果涉及到多个线程,并且有读有写的过程中,HashMap 就不能满足我们的需要了(fail-fast)。在不考虑性能问题的时候,我们的解决方案有 Hashtable 或者Collections.
概述LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。看一下 LinkedList 的类的定义:public class LinkedList<E>
ArrayList 概述ArrayList 可以理解为动态数组,用 MSDN 中的说法,就是 Array 的复杂版本。与 Java 中的数组相比,它的容量能动态增长。ArrayList 是 List 接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。
关注时代Java