Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection classes)。集合在java中非常重要,在讨论之前,先来看几个面试中的经典问题。
1 Collection 和 Collections的区别。
2 List, Set, Map是否继承自Collection接口。
3 ArrayList和Vector的区别。
4 HashMap和Hashtable的区别。
篇尾有答案,我们开始正题。
集合Collection接口
--Collection 是任何对象组,元素各自独立,通常拥有相同的套用规则。Set List由它派生。
基本操作 增加元素add(Object obj); addAll(Collection c);
删除元素 remove(Object obj); removeAll(Collection c);
求交集 retainAll(Collection c);
删除元素 remove(Object obj); removeAll(Collection c);
求交集 retainAll(Collection c);
访问/遍历集合元素的好办法是使用Iterator接口(迭代器用于取代Enumeration)

Public interface Iterator
{

Public Boolean hasNext(};

Public Object next(};

Public void remove(};

}
集set
--没有重复项目的集合
有三种特定类型的集可用
HashSet-基于散列表的集,加进散列表的元素要实现hashCode()方法
LinkedHashSet-对集迭代时,按增加顺序返回元素
TreeSet-基于(平衡)树的数据结构
清单List
--位置性集合。加进清单的元素可以加在清单中特定位置或加到末尾
有两个特定版本
ArrayList(数组表)-类似于Vector,都用于缩放数组维护集合。区别:
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
LinkedList(链表)-是双向链表,每个节点都有两个指针指向上一节点和下一节点。
用在FIFO,用addList()加入元素 removeFirst()删除元素
用在FILO,用addFirst()/removeLast()
ListIterator提供双向遍历next() previous(),可删除、替换、增加元素
映射表Map
--用于关键字/数值对,像个Dictionary
处理Map的三种集合
关键字集KeySet()
数值集value()
项目集enrySet()
四个具体版本
HashMap-散列表的通用映射表
LinkedHashMap-扩展HashMap,对返回集合迭代时,维护插入顺序
WeakHashMap-基于弱引用散列表的映射表,如果不保持映射表外的关键字的引用,则内存回收程序会回收它
TreeMap-基于平衡树的映射表
HashMap-散列表的通用映射表
LinkedHashMap-扩展HashMap,对返回集合迭代时,维护插入顺序
WeakHashMap-基于弱引用散列表的映射表,如果不保持映射表外的关键字的引用,则内存回收程序会回收它
TreeMap-基于平衡树的映射表
Collections类,用于同步集合,还能改变集合只读方式的类
e.g.:
Map mp=new HashMap();

mp=Collections.synchronizedMap(mp); //生成线程安全的映射表

mp=Collections.unmodifiableMap(mp); //生成只读映射表
Comparable 自然顺序的排序类 Comparator 面向树的集合排序类
容器分类学(Container taxonomy)
集合接口: Collection List Set;Map Iterator ListIterator。
抽象类: AbstractCollection AbstractList AbstractSet AbstractMap AbstractSequentiaList。
老版本中的集合类型
Vector类
Vector,就是向量。一种异构的混合体,可以动态增加容量。对它的操作简要如下
比如我们有一个Vector: Vector myVec=new Vector(a_Array.length)
取得vector的长度:myVec.size();
赋值:set(int position,Object obj) / setElementAt(Object obj, int position) –不支持动态增长
add(Object obj )/ addElement(Object obj) 在Vector末尾加入对象
e.g.:myVec.add(new a_Array[0]);
取出元素:get(int position) / getElement(int position)
Stack类
是Vector的子类。就是数据结构里讲滥了的堆栈(这个词可简称栈,不要混淆于heap-堆)。后进先出的存取方式。
Stack()构造空栈
Empty()叛空
Search()检查堆栈是否有元素
Peek()取得栈顶元素
Pop()弹栈
Push()入栈
Enumeration接口
Dictionary类
字典。关键字/数值方式存取数据,如果映射没有此关键字,取回null。
Hashtable类
是Dictionary结构的具体实现。
面试题答案
Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口
List, Set, Map是否继承自Collection接口? List,Set是 Map不是
ArrayList和Vector的区别。
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
HashMap和Hashtable的区别
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
相关推荐
### 浅谈Java集合框架 Java集合框架是一个用于存储、操作和检索一组对象的强大工具集。集合框架的设计目的是为了提供一套高效且灵活的数据结构来满足不同的应用需求。本篇文章将详细探讨Java集合框架中的一些核心...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储、管理和处理提供了丰富的类和接口。这个框架包括了数组、链表、队列、堆栈、映射等多种数据结构,极大地提高了开发效率和代码的可读性。在本文中...
本文将从源码分析角度出发,深入探讨Java集合框架中常用的接口和实现类的底层数据结构及其特点,并探讨其在实际业务开发中的应用选择。 Java集合框架中的数据结构主要分为两大类:Collection集合和Map集合。...
- **集合框架**:掌握Java的集合框架,了解List、Set、Map等容器的使用场景。 - **异常处理**:学会正确使用try-catch-finally语句处理异常情况。 - **输入输出流**:熟悉文件读写操作,包括文本文件和二进制文件的...
"浅谈Java程序设计在线开放课程"这个主题,将深入探讨Java语言的核心概念、编程实践以及如何通过在线平台有效地学习这门技术。 Java以其“一次编写,到处运行”的跨平台特性,成为了企业级应用开发的首选语言。课程...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一种高效、灵活的数据组织方式。本文将深入探讨Java集合类的基本概念、分类以及示例。 首先,Java中的集合分为两大类:一种是以单个元素存储的集合,它们...
- **无泛型支持**:Hashtable属于旧版集合框架,不支持泛型,这意味着在使用时需要进行类型转换,容易引发ClassCastException。 - **不支持迭代器**:与HashMap等新集合框架相比,Hashtable不支持foreach循环,使用...
首先,Collection是Java集合框架的顶层接口,它是所有单值容器的父接口。Collection接口定义了对一组对象进行操作的基本方法,如添加元素(add),删除元素(remove),检查元素是否存在(contains)等。Collection的主要...
总之,理解 Java 集合框架及其接口、实现类及其特性是每个 Java 开发者必备的基础知识,这有助于编写更高效、更易于维护的代码。通过熟练掌握这些概念,你可以更好地处理各种数据结构需求,并为解决实际问题打下坚实...
Java集合框架的核心接口包括List、Set和Map。List接口代表一个有序的、允许重复元素的集合,比如ArrayList和LinkedList。Set接口则表示不允许重复元素的集合,如HashSet和TreeSet。Map接口用于存储键值对,如HashMap...
1. 课程体系设计:Java在线课程应包含基础语法、面向对象编程、集合框架、异常处理、多线程、网络编程等核心模块。每个模块应由易到难,逐步深入。 2. 实践项目:理论与实践相结合,设置实际的编程项目,如开发简单...
### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...
Java集合框架提供了丰富的API供开发者使用。例如,List接口提供了add、remove、contains等方法,Set接口则包含add、removeAll等。Map接口中,get、put和remove等方法用于管理键值对。 五、迭代器 迭代器是Java集合...
理解这两个概念的区别对于高效地利用Java集合框架至关重要。 首先,我们来详细了解一下`Collection`接口。`Collection`是Java集合框架的基础,它位于层次结构的顶层,位于`java.util`包下。`Collection`是一个接口...
Iterator接口是Java集合框架的核心组件,提供了一种迭代访问集合元素的方法,而无需暴露底层的实现。以下是使用Iterator遍历List的例子: ```java List<String> list = new ArrayList(); list.add("123"); list.add...
标题:“浅谈jQuery的应用” 知识点: 1. jQuery简介:jQuery是一个继prototype之后的优秀JavaScript框架,由John Resig创建于2006年初。它简化了JavaScript以及Ajax编程,以“write less, do more”为宗旨,用更...
在Java编程语言中,`Map`接口是集合框架的一部分,它提供了一种存储键值对数据结构的方法。Map接口定义了映射关系,其中每个键(Key)都是唯一的,并且与一个值(Value)相关联。它替代了早期的`Dictionary`类,因为...
浅谈Java中unmodifiableList方法的应用场景 Java是一个强大的面向对象的编程语言,广泛应用于Android开发、Web开发、企业软件开发等领域。Java集合框架(Java Collections Framework)是Java语言中的一种基本工具,...
在Java编程语言中,集合框架是处理对象数组的关键部分,而`Iterable`和`Iterator`则是这个框架中的两个核心概念,它们提供了遍历集合元素的...了解这两个接口的差异和用法,对于提升Java集合框架的使用效率至关重要。
在深入讲解`Iterator.remove()`之前,我们先来了解一下Java集合框架中的迭代器。 Java集合框架提供了一种方式来遍历和操作集合中的元素,这就是迭代器(Iterator)。迭代器是一种设计模式,它允许程序员遍历任何...