Collection主要有list和set两个子接口:
List接口:对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList,Vector和LinkedList。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。(ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的 )
Set接口:是Collection的另一种扩展,在Set中的对象元素不能重复。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的(实现Comparable接口)。
ps:集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。Comparable是内部排序,即一个类实现Comparable接口后,自身拥有一个compareTo()的比较方法,用来将自身和传来的对象进行比较。而Comparator是外部排序,它使用的策略模式,将你所需要的比较逻辑实现为一个Comparator,然后传回给对象(不需要改变对象本身结构,面向接口编程),从而实现比较。
Map是一种把键对象和值对象进行关联的容器:
Map比较常用的实现:Hashtable,HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放。TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。(HashTable 是线程安全的,不能存储 null 值 ,HashMap 不是线程安全的,可以存储 null 值)
分享到:
相关推荐
在Java编程语言中,`java.util.Vector`是一个重要的集合类,它是`ArrayList`的早期版本,提供了线程安全的动态数组实现。这篇文章将对`Vector`类进行详细的总结,包括其特点、用法以及与`ArrayList`的区别。 1. **...
Java Collection API 中的集合类主要位于 java.util 包中,同时也有一些与并发相关的集合类位于 java.util.concurrent 包中。 Java 集合概览可以分为两大类:Collection 和 Map。Collection 类的集合可以理解为主要...
### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...
它继承自Hashtable类,这意味着Properties类本质上是一个键值对的集合,且线程不安全。由于继承自Hashtable,它支持同步操作,但在处理大量并发时,建议使用Properties的子类`java.util.concurrent....
本文将重点介绍如何使用Java标准库中的`java.util.Arrays`和`java.util.Collections`类来对数组和集合进行排序。 首先,`Arrays`类提供了对数组进行排序的功能,无论是基本数据类型数组还是对象数组。例如,对于...
**1.1.2 集合类** - **日期类 Date** - `java.util.Date` 用于表示特定的时间点,提供了多种方法来获取日期和时间的部分。 - **日历类 Calendar** - `java.util.Calendar` 是一个抽象类,提供了一种更灵活的方式...
- **1.4 本章小结** - 对求职过程进行了总结,并强调了成功应聘的关键因素。 #### 二、Java试题篇 - **2.1 Java概述和开发环境** - **理解Java**:介绍Java的历史背景、特点及其应用场景。 - **构建Java开发...
Java中的Vector类是Java集合框架中的一个经典组件,它是一个动态数组,能够随着元素的增加自动地扩展容量。Vector类和ArrayList类在很多方面都很相似,例如两者都是基于数组实现的线程安全的可调整大小的数组结构。...
7. **实验小结**: - 显式类型转换:在Java中,当需要改变数据类型的表示范围时,需要使用强制类型转换(例如`(char)`或`(int)`)。 - `Scanner`类的使用:通过`Scanner`的`nextDouble()`方法可以获取用户输入的...
它定义了一系列用于处理或操作集合中元素的方法,是所有集合类的根接口。 ### 11.2 Collection接口简介 #### 1. Collection接口概述 - **Collection接口**:是容器类的顶级接口。 - **特点**: - JDK并未直接...
3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt.AWTPermission 38 3.6.10 java.net.NetPermission 38 3.6.11 java.lang.reflect Reflect Permission 39 3.6.12 java....
Java 工具类总结 Java 工具类是一组常用的公共方法,帮助开发者简化代码和提高开发效率。下面总结了 16 个有用的 Java 工具类,涵盖 IO 操作、文件操作、字符串操作等多个方面。 一、org.apache.commons.io....
3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt.AWTPermission 38 3.6.10 java.net.NetPermission 38 3.6.11 java.lang.reflect Reflect Permission 39 3.6.12 java....
- **定时器小结**:定时器提供了一种灵活的方式来延迟或周期性地执行任务,但需要注意的是,如果任务执行时间过长,可能会阻塞定时器线程,影响其他任务的执行。 2. **数据结构** - 数据结构是计算机科学中用于...
### 事件编程小结 在Java中,事件处理机制是一种非常重要的编程模型,尤其是在图形用户界面(GUI)设计中。事件编程允许程序响应用户的输入,如点击按钮、移动鼠标等。本文将详细介绍Java中的事件处理机制,特别是...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 ...
1. **常用API**:这部分可能涵盖各种常用库,例如Java的`java.util`包,其中包含集合框架(如ArrayList、HashMap)、日期时间处理(如Date、Calendar)、IO流操作(如FileInputStream、PrintWriter)等。在Python中...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 实例190 验证码 322 11.3 ...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 ...