1、java的集合结构:(java.util包中)
Collection
|--List
|--ArrayList
|--LinkedList
|--vector
|--stack
|--Set
|--EnumSet
|--TreeSet
|--HashSet(类似于HashMap)
Map
|--HashMap
|--Hashtable
2、具体区别:
(1)ArrayList和LinkedList的区别:
LinkedList实现了List接口,类似于双向链表,允许null元素。提供了get,remove,insert等方法。
LinkedList没有同步方法,如果多个线程同时访问LinkedList需要自己实现同步方法。
一种实现同步方法:
List list = Conllections.synchronizedList(new LinkedList<String>());
ArrayList实现了List接口,类似于大小可变的数组。ArrayList也是非同步的。
Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建
的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线
程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出
ConcurrentModificationException,因此必须捕获该异常。
Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆
栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方
法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
(2)List和Set的区别:
A、List允许多次插入null值,Set只允许插入一次null;
set的add()方法是:public boolean add(E e),只有当set中不存在当前值时,才会插入成功;
List的add()方法无此要求,可以允许重复插入;
B、List可以使用list.get(int index)方法访问,Set是无序的,只能通过Iterator迭代访问;
List是有序的Collection,可以精确的控制每个元素,可以使用每个元素的索引(元素在List中的下标,类似于数组的下标):
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(1));
list.add(new Integer(2));
System.out.println(list.get(2));//下标从0开始,輸出為2
List也实现了Iterator接口,也可以通过Iterator迭代:
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(1));
list.add(new Integer(2));
Iterator<Integer> ite = list.iterator();
while(ite.hasNext()){
ite.next();
}
List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一 些add()之类的方法,允许添加, 删除,设定元素,还能向前或向后遍历。
ListIterator<Integer> ite2 = list.listIterator();//listIterator()方法,返回一个ListIterator接口
//ite2.previousIndex();//前一个索引值
//ite2.nextIndex();//后一个索引值
//ite2.previous();//前一个元素
//ite2.next();
//ite2.add(new Integer(3));//将指定的元素插入列表,插入到当前元素的后面
//ite2.next();//后一个元素
//ite2.set(new Integer(4));//用指定元素替换 next 或 previous 返回的最后一个元素
Iterator<Integer> ite = list.iterator();
while(ite.hasNext()){
System.out.println(ite.next());//3,1,1,2
}
(3)List和Map的区别:
Map没有实现Collection接口,是以Key-Value形式存在的。
(4)Hashtable 和HashMap的区别:
都是以key-value的形式储存数据的。
Hashtable 不允许null作为key或value,是线程安全的;
HashMap 允许null作为key或者value,是非线程安全的;
Map<Object, Object> table = new Hashtable<Object, Object>();
table.put(null, null);
会报java.lang.NullPointerException异常,换成HashMap则正常;
3、Collections和Collection的区别:
Collections.reverse(list); //list中元素顺序反转
Collections.sort(list);//按大小排序
Collections.synchronizedList(list);//该list加同步的方法
4、总结:
1)如果涉及到堆栈、队列等操作,应该使用List。对于快速插入、删除元素,应该使用LinkedList;而如果希望快速的随机访问元素,使用ArrayList。
2)建议使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。
分享到:
相关推荐
Java集合框架中的`Collection`接口是所有单值容器的基础接口,它定义了基本的增删查改元素的方法。`Collection`有两个主要的子接口:`List`和`Set`。`List`接口要求元素保持特定的顺序,并允许重复元素;而`Set`接口...
- `Collection`接口是所有集合类的根接口,分为`List`和`Set`两大分支。 - `List`接口包括`ArrayList`和`LinkedList`等实现,`ArrayList`适合随机访问,`LinkedList`适合频繁的插入和删除操作。 - `Map`接口用于...
Java集合collection详解[整理].pdf
"JAVA笔记(根据马士兵的java视频整理)" 本资源是根据马士兵的JAVA视频整理的笔记,涵盖了JAVA的基础知识、数据结构、面向对象编程、Java Web编程、J2EE、J2ME等方面的知识点。 在基础知识方面,本资源涵盖了变量...
### Java集合资料整理 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一套丰富的API来存储和操作集合中的对象。集合框架的核心是接口和它们的实现类,这些接口和实现类共同构成了一个高度...
本文档是一份关于Java核心面试知识的整理资料,内容涉及Java虚拟机(JVM)、Java内存模型、垃圾回收机制、Java IO/NIO、Java集合等多个关键知识点。通过对这些知识的梳理,能够帮助Java开发者更好地准备面试,同时也...
# Java垃圾回收基础知识详解 ## 引言 Java 虚拟机 (JVM) 的垃圾回收机制是 Java 语言的一项重要特性,它自动管理内存,帮助开发者减轻了手动管理内存的压力。本篇将深入探讨 Java 垃圾回收的基本原理、工作方式...
14. **在COLLECTION框架中,实现比较要实现的接口** 要实现`Comparable<T>`接口,以便在集合中进行自然排序。 15. **插入法排序代码** 插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未...
java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它...
### Java基础知识点整理 #### 第一章 搭建开发环境 **1.1 配置Java环境** 在配置Java开发环境之前,首先需要下载并安装JDK(Java Development Kit)。JDK是Java语言的核心组件,包含了Java运行时环境(JRE)及编译...
垃圾回收(Garbage Collection,简称GC)是Java语言的一个重要特性,它自动化地管理程序中的内存分配与释放,避免了传统C++等语言中的内存泄漏问题。本文将围绕Java垃圾回收这一主题,展开一系列关键知识点的详细解析...
### Java面试知识点详解 #### 一、Java简介与特点 **Java**是由Sun Microsystems公司在1995年推出的一种高级程序设计语言。它具有跨平台的特性,可以在多个操作系统上运行,例如Windows、Mac OS以及其他多种UNIX...
Java面试经验整理涉及了Java集合框架的核心知识点,特别是List、Set和Map三个接口及其子接口和实现类的特性、用途和性能比较。以下是对这部分内容的知识点总结: 1. Java集合框架结构 Java集合框架由Collection...
- **接口继承关系和实现**:Java集合框架提供了一组标准接口,如Collection、Set、List、Map等,这些接口定义了集合的行为,而具体的实现类则提供了具体的操作实现。 - **List**: - **ArrayList(数组实现)**:...
Java集合框架中的接口包括Collection、Set、List、Map等。 3.2 LIST List接口表示一个有序集合,ArrayList和Vector是List接口的典型实现,ArrayList基于数组实现,Vector既基于数组又线程同步。 3.3 SET Set接口...
Java EE API 整理主要涉及的是Java集成框架中的核心组件——集合框架。集合框架是Java编程语言中的一个重要组成部分,它提供了存储和管理对象的方式。在Java 2之前,也就是Java 1时代,集合框架并不完善,仅有一些...
Java 面试题整理 下面是对给定文件的详细知识点总结: 1. J2EE 是什么? 答:J2EE 是 Sun 公司提出的多层、分布式、基于组件的企业级应用模型。在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又...
这份"JAVA核心知识点整理_分享.pdf"文档涵盖了Java技术体系的关键点,包括JVM(Java虚拟机)的深入理解,这对于任何Java开发者来说都是至关重要的。以下是根据文档内容整理的一些核心知识点: ### JVM(Java ...
这篇博客"JAVA容器对象整理"可能涵盖了关于Java中的不同容器类、接口以及它们的使用方式。在这里,我们将深入探讨一些核心的Java容器知识点。 1. **ArrayList与LinkedList** - `ArrayList`是一个基于数组实现的...
老年代的垃圾回收通常采用标记-压缩(Mark-Compact)或分代收集(Generational Collection)算法。 总结: Java的核心在于其跨平台的JVM,理解JVM的工作原理和内存管理有助于优化程序性能,降低内存泄漏和提高应用...