数组类Array。是JAVA中最基本的一个存储结构。它用于存储一组连续的对象或基本类型的数据。其中的元素的类型必须相
同。array是最有效率的一种。1、效率高,但容量固定且无法动态改变。 array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。 2、JAVA中有一个Arrays类,专门用来操作array ,提供搜索、排序、复制等静态方法。 equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。 fill():将值填入array中。 sort():用来对array进行排序。 binarySearch():在排好序的array中寻找元素。 System.arraycopy():array的复制。
Java Collections Framework成员主要包括两种类型,即:Collection和Map类型。 在Java中提供了Collection和Map接口。其中List和Set继承了Collection接口;同时用Vector、ArrayList、LinkedList三个类实现List接口,HashSet、TreeSet实现Set接口。直接有HashTable、HashMap、TreeMap实现Map接口。由此可见,Java中用8种类型的基本数据结构来实现其Collections Framework;下面分别进行介绍。
Vector基于Array的List,性能也就不可能超越Array,并且Vector是“sychronized”的,这个也是Vector和ArrayList的唯一的区别。
ArrayList:同Vector一样是一个基于Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快。
LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了所以它适合于进行频繁进行插入和删除操作。这就是LinkedList的优势。Iterator只能对容器进行向前遍历,而 ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。
List:1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ]; 2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]; 3. 所有的List中可以有null元素,例如[ tom,null,1 ]; 4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。
HashSet:虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项,这也是为什么在Set中不能像在List中一样有重复的项的根本原因,因为HashMap的key是不能有重复的。HashSet能快速定位一个元素,但是放到HashSet中的对象需要实现hashCode()方法0。
TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要重复定义相同的排序算法,只要实现Comparator接口即可。TreeSet是SortedSet的子类,它不同于HashSet的根本就是TreeSet是有序的。它是通过SortedMap来实现的。
Set总结: 1. Set实现的基础是Map(HashMap); 2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象; Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? Set里的元素是不能重复的,即不能包含两个元素e1、e2(e1.equals(e2))。那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。==方法决定引用值(句柄)是否指向同一对象。
Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现: HashTable、HashMap和TreeMap。
HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它有一些扩展的方法,比如firstKey(),lastKey()等。HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口。主要区别在于HashMap允许空(null)键(key)或值(value),非同步,由于非线程安全,效率上可能高于Hashtable。 Hashtable不允许空(null)键(key)或值(value),Hashtable的方法是Synchronize的,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
发表评论
-
菜鸟 Spring 源码解读 推荐流程
2012-01-11 09:18 5128Spring源代码解析(一):IOC容器:http://www ... -
深入剖析Classloader(一)--类的主动使用与被动使用
2011-12-27 22:13 1095我们知道java运行的是这样的,首先java编译器将我们的源代 ... -
Java中连接字符串时是使用+号还是使用StringBuilder?
2011-12-26 14:04 923字符串是Java程序中最常用的一种数据结构之一。在Java中的 ... -
转一篇有关Java的内存泄露的文章(受益哦)
2011-07-20 09:28 7741 引言 Java的一个 ... -
Tomcat内存溢出的原因
2011-07-19 09:41 730Tomcat内存溢出的原因 在生产环境中tomcat内 ... -
深入研究java.lang.ThreadLocal类
2011-07-13 09:39 685一、概述 ThreadLocal是什么呢?其实Thread ... -
jboss中实现跨war包session同步
2011-06-12 23:28 1290跨war包session同步解决方 ... -
开源框架spring详解-----AOP的深刻理解
2011-05-26 22:13 1251开源框架spring详解-----AOP的深刻理解 AOP的 ... -
struts2核心工作流程与工作原理
2011-05-26 15:35 12891. Struts2架构图 这是S truts2官方站点提供的 ... -
Spring注入方式及用到的注解 -----@Component,@Service,@Controller,@Repository
2011-05-26 15:04 1227注入方式: 把DAO实现 ... -
Java中的native关键字浅析(Java Native Interface)
2011-05-21 23:13 741JNI是Java Native Interface的 ... -
Volatile 变量
2011-04-26 17:01 656Java 语言中的 volatile 变量可以被看作是一种 “ ... -
Java对象的强、软、弱和虚引用
2011-04-26 16:04 6281.Java对象的强、软、 ... -
Web 应用程序常见漏洞 CSRF 的入侵检测与防范
2011-04-23 15:00 1120简介: 互联网的安全问题一直存在,并且在可预见的未来中没有消弭 ... -
详解XSS跨站脚本攻击
2011-04-23 13:46 1143一、什么是XSS攻击 XSS ... -
CSRF攻击原理解析
2011-04-22 10:29 12830×00. 前言 在Web程序中 ... -
selenium 初步体检之富文本框操作
2011-04-20 20:10 1542public class LoginTest extends ... -
webx
2011-03-05 17:54 1019webx 学习笔记。 -
Java读带有BOM的UTF-8文件乱码解决方法
2011-03-02 11:12 2465Java default io reader does not ... -
java sftp tools
2011-02-24 13:30 1517import java.io.File; import jav ...
相关推荐
Java集合类矩阵图是Java编程中非常重要的一个概念,它主要涵盖了Java集合框架中的各种接口、类以及它们之间的关系。这个矩阵图可以帮助开发者更清晰地理解Java集合框架的层次结构和实现方式。在这个矩阵图中,你可以...
毕业设计的主题是基于Java语言实现的图形学程序。本设计将实现基本的图形学功能,包括点、线、圆、椭圆、多边形等的画图,以及图形的变换、旋转、缩放等操作。 设计将采用Java语言和相关的图形学类库进行实现。主要...
- AWT是Java的基础GUI库,提供了一系列的组件,如按钮、文本框等,以及用于图形绘制的基本类,如`Graphics`。 - Swing是建立在AWT之上的高级GUI库,提供了更多功能和自定义选项。它包含了一些更现代、更丰富的组件...
6. **Java集合与泛型**:集合框架是Java处理对象集合的主要工具,包括ArrayList、LinkedList、HashSet、HashMap等。泛型是Java 5引入的新特性,用于在编译时检查类型安全,避免强制类型转换,并提供更好的性能。理解...
这篇文档将深入解析“java作业图形化.rar”这个压缩包中的知识内容,主要涉及Java编程语言,特别是如何利用Java Swing库来设计图形用户界面(GUI)以及实现员工信息的管理功能。 首先,从标题和描述我们可以了解到...
本文将深入探讨Java集合类之间的关系,帮助你理清疑惑,让你在处理数据存储时更加得心应手。 首先,Java集合框架主要分为两大接口:`List` 和 `Set`,它们都继承自根接口 `Collection`。`List` 接口要求元素有序,...
2. **集合框架**:Java集合框架是Java API中的重要部分,提供了`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等数据结构,以及`List`、`Set`、`Map`等接口。它们允许我们高效地存储、检索和操作对象。 3. **IO...
在Java中进行图形处理主要依赖于`java.awt` 和 `javax.swing` 包中的类。`Graphics` 类是绘制的基础,它可以用来画线、填充形状、写字等。`Graphics2D` 是`Graphics` 的扩展,提供了更高级的功能,如抗锯齿、变换和...
系统主要通过Java语言实现,并利用Java集合类来存储数据,代替传统意义上的数据库。此项目适用于Java初学者以及想要了解如何使用集合类进行数据操作的学习者。 #### 二、需求分析 ##### 功能需求 1. **登录**:...
总之,这个Java编写的计算机图形学程序源码集合是一个宝贵的教育资源,无论是初学者还是有经验的开发者,都能从中受益。通过实际操作和调试这些代码,你不仅可以掌握计算机图形学的基础知识,还能深化对Java编程的...
6. **多态(Polymorphism)**:由于所有的具体图形类都继承了同一个抽象类或实现了相同的接口,因此可以将它们的引用存储在一个`Shape`类型的数组或集合中。这样,我们可以通过调用`getArea()`和`getPerimeter()`...
- **数据存储结构**:Java集合框架如`ArrayList`、`LinkedList`、`HashMap`等,可以用来存储和管理学生信息,根据具体需求选择合适的数据结构。 6. **数据库连接与操作** - **JDBC**:Java Database Connectivity...
接着,Java集合框架是另一个重要部分,包括ArrayList、LinkedList、HashSet、HashMap等数据结构的使用。这些工具在处理数据时提供了极大的灵活性和效率,视频可能有专门的章节进行教学。 异常处理是Java编程中不可...
"Java API大集合,很经典,学习java必备"这句话表明,这个集合不仅全面,而且具有权威性和实用性,是Java初学者和资深开发者都需要掌握的重要知识资源。 在Java API中,我们可以找到如下的核心部分: 1. **基础类库*...
Java图形程序设计主要涉及到Java的GUI(图形用户界面)开发,这部分内容主要使用Java的Swing库进行讲解。Swing是Java提供的一种高级GUI组件库,它是在AWT(Abstract Window Toolkit)的基础上构建的,旨在提供更为...
本资源集合包含了多个章节的源码,涵盖了Java图形和动画开发的多个关键点,为深入理解和实践提供了宝贵的素材。 1. **Java Swing基础** Java Swing是Java Foundation Classes (JFC)的一部分,提供了一套轻量级组件...
Java的jar(Java Archive)文件格式是Java平台的标准打包机制,它允许将多个类文件和其他资源集合到一个单一的文件中,便于分发和部署。 在Java中,图形动画通常涉及使用Java的AWT(Abstract Window Toolkit)或...
通过java.awt.Graphics2D类,开发者可以进行精确的图形绘制,包括直线、曲线、填充形状、文字以及图像的绘制。此外,还可以利用Java 2D API创建动画效果和复杂的图形变换。 在实际项目中,布局管理器(Layout ...
本文将深入探讨Java集合类之间的关系,包括Map、Set、List和Vector,以及它们各自的特点和使用场景。 首先,我们来看标题中的“Java集合关系”。Java集合框架是一个接口和类的集合,它们提供了对对象集合的各种操作...
Java是一种强类型、解释型的语言,由Sun Microsystems(现已被Oracle收购)于1995年发布。它的设计目标是“一次编写,到处运行”,这意味着编写的Java代码可以在任何支持Java的平台上运行,无需重新编译。这得益于...