`
messon619
  • 浏览: 45369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 集合类图形解释

阅读更多



数组类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算法都大概一样,所以性能不会有很大的差异。
分享到:
评论

相关推荐

    Java集合类矩阵图

    Java集合类矩阵图是Java编程中非常重要的一个概念,它主要涵盖了Java集合框架中的各种接口、类以及它们之间的关系。这个矩阵图可以帮助开发者更清晰地理解Java集合框架的层次结构和实现方式。在这个矩阵图中,你可以...

    基于JAVA画图形学程序的毕业设计,本设计将实现基本的图形学功能,包括点、线、圆、椭圆、多边形等的画图,以及图形的变换、旋转等

    毕业设计的主题是基于Java语言实现的图形学程序。本设计将实现基本的图形学功能,包括点、线、圆、椭圆、多边形等的画图,以及图形的变换、旋转、缩放等操作。 设计将采用Java语言和相关的图形学类库进行实现。主要...

    java几何图形

    - AWT是Java的基础GUI库,提供了一系列的组件,如按钮、文本框等,以及用于图形绘制的基本类,如`Graphics`。 - Swing是建立在AWT之上的高级GUI库,提供了更多功能和自定义选项。它包含了一些更现代、更丰富的组件...

    Java课件 (包括基础语法,数组与语句,面向对象编程,java异常处理,java常用基础类,java集合与泛型

    6. **Java集合与泛型**:集合框架是Java处理对象集合的主要工具,包括ArrayList、LinkedList、HashSet、HashMap等。泛型是Java 5引入的新特性,用于在编译时检查类型安全,避免强制类型转换,并提供更好的性能。理解...

    java作业图形化.rar

    这篇文档将深入解析“java作业图形化.rar”这个压缩包中的知识内容,主要涉及Java编程语言,特别是如何利用Java Swing库来设计图形用户界面(GUI)以及实现员工信息的管理功能。 首先,从标题和描述我们可以了解到...

    你还在对Java中的集合类的关系混淆不清吗

    本文将深入探讨Java集合类之间的关系,帮助你理清疑惑,让你在处理数据存储时更加得心应手。 首先,Java集合框架主要分为两大接口:`List` 和 `Set`,它们都继承自根接口 `Collection`。`List` 接口要求元素有序,...

    Java的api集合

    2. **集合框架**:Java集合框架是Java API中的重要部分,提供了`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等数据结构,以及`List`、`Set`、`Map`等接口。它们允许我们高效地存储、检索和操作对象。 3. **IO...

    java图形用户界面,Applet与图形处理

    在Java中进行图形处理主要依赖于`java.awt` 和 `javax.swing` 包中的类。`Graphics` 类是绘制的基础,它可以用来画线、填充形状、写字等。`Graphics2D` 是`Graphics` 的扩展,提供了更高级的功能,如抗锯齿、变换和...

    Java图书管理系统(基于Java常用集合实现)

    系统主要通过Java语言实现,并利用Java集合类来存储数据,代替传统意义上的数据库。此项目适用于Java初学者以及想要了解如何使用集合类进行数据操作的学习者。 #### 二、需求分析 ##### 功能需求 1. **登录**:...

    java编写的计算机图形学程序源码汇集

    总之,这个Java编写的计算机图形学程序源码集合是一个宝贵的教育资源,无论是初学者还是有经验的开发者,都能从中受益。通过实际操作和调试这些代码,你不仅可以掌握计算机图形学的基础知识,还能深化对Java编程的...

    java 求自定义几何图形的面积和周长

    6. **多态(Polymorphism)**:由于所有的具体图形类都继承了同一个抽象类或实现了相同的接口,因此可以将它们的引用存储在一个`Shape`类型的数组或集合中。这样,我们可以通过调用`getArea()`和`getPerimeter()`...

    JAVA实现学生信息管理系统+图形用户界面(GUI).rar

    - **数据存储结构**:Java集合框架如`ArrayList`、`LinkedList`、`HashMap`等,可以用来存储和管理学生信息,根据具体需求选择合适的数据结构。 6. **数据库连接与操作** - **JDBC**:Java Database Connectivity...

    近30GJava视频教程集合

    接着,Java集合框架是另一个重要部分,包括ArrayList、LinkedList、HashSet、HashMap等数据结构的使用。这些工具在处理数据时提供了极大的灵活性和效率,视频可能有专门的章节进行教学。 异常处理是Java编程中不可...

    Java API大集合

    "Java API大集合,很经典,学习java必备"这句话表明,这个集合不仅全面,而且具有权威性和实用性,是Java初学者和资深开发者都需要掌握的重要知识资源。 在Java API中,我们可以找到如下的核心部分: 1. **基础类库*...

    Java图形程序设计.ppt

    Java图形程序设计主要涉及到Java的GUI(图形用户界面)开发,这部分内容主要使用Java的Swing库进行讲解。Swing是Java提供的一种高级GUI组件库,它是在AWT(Abstract Window Toolkit)的基础上构建的,旨在提供更为...

    Java动画、图形和极富客户端效果开发源码

    本资源集合包含了多个章节的源码,涵盖了Java图形和动画开发的多个关键点,为深入理解和实践提供了宝贵的素材。 1. **Java Swing基础** Java Swing是Java Foundation Classes (JFC)的一部分,提供了一套轻量级组件...

    java图形动画小程序jar文件

    Java的jar(Java Archive)文件格式是Java平台的标准打包机制,它允许将多个类文件和其他资源集合到一个单一的文件中,便于分发和部署。 在Java中,图形动画通常涉及使用Java的AWT(Abstract Window Toolkit)或...

    java图形化界面编程资料.zip

    通过java.awt.Graphics2D类,开发者可以进行精确的图形绘制,包括直线、曲线、填充形状、文字以及图像的绘制。此外,还可以利用Java 2D API创建动画效果和复杂的图形变换。 在实际项目中,布局管理器(Layout ...

    Java集合关系

    本文将深入探讨Java集合类之间的关系,包括Map、Set、List和Vector,以及它们各自的特点和使用场景。 首先,我们来看标题中的“Java集合关系”。Java集合框架是一个接口和类的集合,它们提供了对对象集合的各种操作...

    酒库管理系统 java 入门 图形用户界面

    Java是一种强类型、解释型的语言,由Sun Microsystems(现已被Oracle收购)于1995年发布。它的设计目标是“一次编写,到处运行”,这意味着编写的Java代码可以在任何支持Java的平台上运行,无需重新编译。这得益于...

Global site tag (gtag.js) - Google Analytics