Java---容器基础总结
Java提供了大量持有对象的方式:
(1) 数组将数字与对象联系起来。 它保存类型明确的对象,查询对象时,不需要对结果做类型转换。它可以是多维的, 可以保存基本类型的数据。 但是,数组一旦生成,其容量就不能改变。
(2)Collection保存单一的元素,而Map保存相关联的键值对。有了Java的泛型,你就可以指定容器中存放的对象类型, 因此你就不会将错误类型的对象放置到容器中,并且在从容器中获取元素时,不必进行类型转换。各种Collection 和各种Map都可以在你向其中添加更多的元素时,自动调整其尺寸。 容器不能持有基本类型,但是自动包装机制会仔细地执行基本类型到容器中所持有的 包装器类型之间的双向转换。
(3)像数组一样,List也建立数字索引与对象的关联,因此,数组和List都是排好序的容器。 List能够自动扩充容量。
(4)如果要进行大量的随机访问, 就使用ArrayList(具有数组的特性),如果要经常从表中间插入或删除元素,则应该使用 LinkedList(具有链表的特性)
(5)各种Queue(队列)以及栈的行为, 由LinkedList提供支持。
(6)Map是一种将对象(而非数字)与对象相关联的设计。HashMap设计用来快速访问,而TreeMap保持 “键” 始终处于排序状态,所以没有 HashMap快。LinkedHashMap保持元素插入的顺序, 但是也通过散列提供了快速访问能力。
(7)Set不接受重复元素。HashSet提供最快的查询速度,而TreeSet保持元素处于排序状态。
LinkedHashSet以插入顺序保存元素。
Java容器的简图(不包含抽象类和遗留构件):
|
你可以看到, 其实只有四种容器: Map、List 、Set和 Queue,它们各有两到三个实现版本。常用的容器用黑色粗线框表示。 点线框表示接口, 实线框表示普通的(具体的) 类。带有空心箭头的点线表示一个特定的类实现了一个接口, 实心箭头表示某个类可以生成箭头所指向类的对象。 例如, 任意的 Java的容器每天都会用到的工具, 它可以使程序更简洁更强大更高效。 |
![]() |
4.Java容器---Arrays & Collections工具类
5.Java容器---字符容器StringBuffer & StringBuilder
7.java容器---Comparable & Comparator
8.Java容器---Set基础: HashSet & TreeSet & LinkedHashSet
Java---容器基础总结的更多相关文章
- 工作随笔—Java容器基础知识分享(持有对象)
1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...
- java容器基础
总结一下学过的java容器知识. 一.java容器框架 由于之前学习的java容器类比较混乱,先简单的整理一下java集合框架. 首先,像这种图,网上到处都是,因为这个也算比较准确吧,我也懒得自己画了 ...
- Java容器基础概况
一.什么是Java容器 书写程序时,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一个数据容器中.Java容器类是java提供的工具包,包含了常用的数据结构 ...
- Java容器之旅:容器基础知识总结
下图展示了Java容器类库的完备图,包括抽象类和遗留构件(不包括Queue的实现). 常用的容器用黑色粗线框表示,点线框表示接口,虚线框表示抽象类,实线框表示类,空心箭头表示实现关系.Produce表 ...
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
- Java以基础类库
Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...
- java容器---集合总结
思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...
- 3)Java容器
3)Java容器 Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...
随机推荐
- NIN (Network In Network)
Network In Network 论文Network In Network(Min Lin, ICLR2014). 传统CNN使用的线性滤波器是一种广义线性模型(Generalized linea ...
- R读取excel文件
2017.09.05 我一个下午的成果啊啊啊啊,看看失败 不禁感叹一声,失败的路真是多啊!!!! 一.安装xlsx包 下面具体讲一讲怎么弄的(太笨了,所以学得慢,需要一步一步的来) 用R读取excel ...
- Qt error ------ incomplete type 'QApplication' used in nested name specifier
没有包含 ‘QApplication’ 头文件
- VS生成事件执行XCOPY时出现Invalid num of parameters的解决方案
最近想偷懒 想把项目生成的dll全部自动汇集到一个文件夹下 于是乎就动用了VS的生成后事件 在执行Xcopy的时候碰到了点问题 Invalid number of parameters 挺奇怪的,在公 ...
- python---基础知识回顾(十)进程和线程(多线程)
前戏:多线程了解 使用多线程处理技术,可以有效的实现程序并发,优化处理能力.虽然进程也可以在独立的内存空间并发执行,但是生成一个新的进程必须为其分配独立的地址空间,并维护其代码段,堆栈段和数据段等,这 ...
- Windows下php,mysql,apache相关安装与配置,完善中…
PHP 的安装 由于php是一个zip文件(非install版),安装较为简单解压就行.把解压的 php5.2.1-Win32重命名为 php5.并复制到安装盘目录下.例如安装路径为 c:\php5 ...
- Spring MVC处理响应的 header
我们经常需要在HttpResponse中设置一些headers,我们使用Spring MVC框架的时候我们如何给Response设置Header呢? So easy, 看下面的代码: @Request ...
- Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8
一切都是windows的控制台默认编码GBK问题 情景: 使用jenkins构建,console 输出的中文乱码.代码编码格式是utf-8,因为Jenkins会默认读取当前系统的编码格式,导致构建日志 ...
- 【学习笔记】初识FreeMarker简单使用
楔子: 之前在和同事讨论,同事说“jsp技术太古老了,有几种页面技术代替,比如FreeMarker.Velocity.thymeleaf,jsp快废弃了……”云云.我这一听有点心虚……我在后端部分越刨 ...
- Kafka安装验证及其注意
一.Zookeeper 配置文件说明: # the directory where the snapshot is stored. dataDir=/tmp/zookeeper # the port ...
