3.[Think in Java笔记]持有对象

简介:

Java提供了大量持有对象的方法:

数组将数字与对象联系起来。它保存类型明确的对象,查询对象时,不需要对结果做类型转换。它可以是多维的,可以保存基本类型的数据。但是数组一旦生成,其容量就不能改变。

193103715.png

四种容器:Map、List、Set和Queue,他们各自有两到三个实现版本。常用的容器用黑色粗线框表示。虚线框表示接口,实线框表示普通类。空心箭头表示一个特定的类实现了一个接口,实心箭头表示某个类可以生成箭头所指向类的对象。

任意的Collection都生成Iterator,而List可以生成ListiIterator。

其中,除TreeSet之外的所有Set都拥有与Collection完全一样的接口。List和Collection存在明显不同。Queue接口的方法都是独立的;在创建Queue的实现时,不需要使用Collection方法。Map和Collection之间为以重叠的就是Map可以使用entrySet()和values()方法来产生Collection。

1.容器类

Java容器类库的用途是“保存对象”,并划分为:

Collection,一个对立元素的序列,保存单一的元素;

Map,一组成对的键值对对象,保存相关联的键值对。

各种Collection和Map都可以在添加元素时自动调整大小。

容器不能持有基本类型,但自动包装机制会执行基本类型与包装器类型进行双向转换到容器中。

2.List

List将元素维护在特定的序列中,List接口在Collection的基础上添加了大量的方法。

List有两种类型的List:

ArrayList

LinkedList

List像数组一样,List也建立数字索引与对象的关联,因此,数组和List都是排好序的容器。List能自动扩充容器。

如果要进行大量的随机访问,使用ArrayList;如果经常从表中插入或删除元素,使用LinedList。

3.迭代器 Iterator

Java的Iterator只能单向移动,只能用来:

使用方法iterator()要求容易返回一个Iterator。Iterator将准备好返回序列的第一个元素;

使用next()方法获得序列中的下一个元素;

使用hasNex()方法检查序列中是否还有元素;

使用remove()方法将迭代器新近返回的元素删除。

4.Stack

LinkedList具有能够直接实现栈的所有功能的方法,因此可以直接将LinkedList作为栈使用。

1
2
3
4
5
6
7
8
9
public  interface  Stack<T> {
     public  T push(T item);
     public  T pop();
     public  T peek();
     public  boolean  empty();
     public  int  search(T desiredItem);
     public  Iterator<T> iteraotr();
     public  ListIterator<T> listIterator();
}

5.Set

Set不保存重复的元素。HashSet提供最快的查询速度,TreeSet保持元素处于排序状态,LinkedHashSet以插入顺序保存元素

Set具有与Collection完全一样的接口,美欧任何额外的功能,不像List。实际上Set就是Collection,只是行为不同。

6.Map

将对象映射其他对象的能力。

Map是一种将对象(而非数字)与对象相关联的设计。HashMap设计用来快速访问;TreeMap保持“键“使用处于排序状态,所以HashMap快。LinkedhashMap保持元素插入的顺序,但也通过散列提供快速访问功能。

7.Queue

队列被当做一种可靠的将对象从程序的某个区域传送到另一个区域的途径。LinkedList可以用作Queue的一种实现,通过将LinkedList向上转型为Queue。

PriorityQueue

先进先出描述了最典型的队列规则。队列规则是指在给定一组队列中的元素的情况下,确定下一个弹出队列的元素的规则。先进先出声明的是/下一个元素应该是等待时间最长的元素。

优先级队列声明下一个弹出元素是最需要的元素(具有最高的优先级),当在ProiorityQueue上插入一个对象时,这个对象在队列中被拍学。










本文转自 LinkedKeeper 51CTO博客,原文链接:http://blog.51cto.com/sauron/1227991,如需转载请自行联系原作者
目录
相关文章
|
20天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
174 37
|
9天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
13 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
20天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
22 9
Java——类与对象(继承和多态)
|
20天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
10天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
25 10
|
7天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
13天前
|
存储 Java 开发者
Java编程中的对象序列化与反序列化
【9月更文挑战第20天】在本文中,我们将探索Java编程中的一个核心概念——对象序列化与反序列化。通过简单易懂的语言和直观的代码示例,你将学会如何将对象状态保存为字节流,以及如何从字节流恢复对象状态。这不仅有助于理解Java中的I/O机制,还能提升你的数据持久化能力。准备好让你的Java技能更上一层楼了吗?让我们开始吧!
|
15天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
205 4
|
15天前
|
SQL Java 关系型数据库
在Java中,创建数据源对象
在Java中,创建数据源对象
27 1
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
下一篇
无影云桌面