`
wzdoxu
  • 浏览: 94633 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java container

阅读更多
Java Container的分类图见附件1,简化分类图见附件2。

Container分类简介:

    Container包括Collection和Map两种分类,其中Collection用来保存单个的Objects,Map以Key-Value的形式来保存Objects。Collection包括List和Set两种,List接口包括两个基本的实现类ArrayList和LinkedList。ArrayList允许随机的快速访问其中元素,但是Insert和Remove速度较慢;LinkedList访问其中元素的速度较慢,但是Insert和Remove相对于ArrayList来说较快。Set接口不允许其中有相等的元素(List允许duplicate elements),其包括两个基本的实现类HashSet和TreeSet。HashTable支持快速的查找元素(要求元素支持hashCode方法),其中的元素随机保存;TreeSet以一定的顺序保存元素,它实现SortedSet接口,均可以返回Comparator接口来确定其排序算法,元素通过实现Comparable接口来确定其间的顺序。Map接口以key-value的形式保存元素,Map中的key都是unique的,其包括两个实现类HashMap和TreeMap。HashMap是HashTable的替代品,它提供定时间的插入和查找元素;TreeMap中的key sets是以一定的顺序保存的,这和TreeSet是类似的,也可以返回Comparator接口来确定其key set的排序算法。

HashCode的作用:

HashCode是为了在HashSet里面更快的查找元素。HashSet在填充元素时候,会对object的hashcode进行一些归类处理,生成一系列的buckets(一般是能够控制在一定范围的)。然后把bucket作为数组的索引,每个数组元素保存一个List,将所有在此bucket内的元素填充入该List当中。当查找元素时候,只需要先根据元素的hashcode找到相应的索引,然后从索引指向的List当中依次查找该元素即可。设计hashcode需要考虑其的聚焦性,尽量减少hashcode的聚焦性,减少多个hashcode指向一个索引的情况,可以更好的提高HashSet的性能。

Iterator的说明:

Iterator是为Contanier提供了一个按照顺序依次取出Container元素的类。Iterator隐藏了取出元素机制和低层结构,程序员不需要知道低层到底是List还是Set还是Map,就可以从其中按照顺序取出元素。也正是因为如此,Iterator只提供了按单方向顺序取出元素。

工具类的说明:

Collections封装了一些常用的方法。包括对List的排序,取其中最大最小元素等等...

如何根据需求选择不同的实现类:

首先,Hashtable,Vector,Stack已经不被推荐使用,保留它们只是为了使遗留系统的代码不被破坏。所以这三个类可以忽略考虑。当使用List的时候,最好的方法是把ArrayList作为Default选择,当发现需要大量的Insertions和removals需求时改换LinkedList;使用Set的时候,如果需要有顺序的查找和取出元素,那么选择TreeSet,否则选择HashSet;使用Map的时候,HashMap用来更快的查找元素,而TreeMap允许按照一定顺序来根据key查找元素。

  • 大小: 4.9 KB
  • 大小: 8.1 KB
分享到:
评论

相关推荐

    JAVA-container.rar_JAVA Container

    Java Container是一种基于Java技术实现的容器程序,它主要用于管理和运行Java应用程序,特别是那些遵循Java EE(Enterprise Edition)标准的应用。这个“JAVA-container.rar”压缩包很可能是包含了一份关于如何理解...

    JAVA 容器用法详解

    JAVA 容器用法详解,关于JAVA容器的详细讲解

    JAVA项目实战(计算器).docx

    ### JAVA项目实战(计算器) #### 一、项目概述 该项目主要通过Java语言实现了一个简易的计算器功能,旨在帮助初学者理解和掌握Java编程的基础知识及GUI(图形用户界面)设计的基本技巧。项目具体涉及到了Eclipse...

    findjobj - find java handles of Matlab graphic objects

    Find all java objects contained within a java container or Matlab GUI handle If no output parameter is specified, then an interactive GUI window will be displayed with a tree-view of all container ...

    用java实现文件夹路径的选择.pdf

    import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFileChooser; import ...

    用java编写的文本编辑器

    根据提供的文件信息,我们可以深入探讨该Java程序所实现的一个简易文本编辑器的关键特性和功能。 ### 1. 程序结构与导入包 #### 导入必要的Java库 ```java import java.awt.*; import java.awt.event.*; import ...

    Java网格布局-4*4计算器

    container.setLayout(gridLayout); ``` 2. **组件添加**:在网格布局中,添加到容器中的每个组件都会占据一个单元格。因此,为4*4计算器创建按钮时,需要创建16个JButton对象,并将它们依次添加到使用网格布局的...

    用Java编写简单计算器

    ### 使用Java编写的简单计算器知识点解析 #### 一、项目概述 本文档介绍了一个使用Java语言编写的简单计算器程序。该程序实现基本的数学运算功能,包括加、减、乘、除以及清除操作。通过本项目的开发过程,可以学习...

    java文件打开保存代码收藏

    Container contentPane = this.getContentPane(); p1.add(b1); p1.add(b2); contentPane.add(p1); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize(200, 200); Dimension screen = Toolkit....

    java播放声音的例子

    Container cp = f.getContentPane(); JButton bt1 = new JButton("play"); JButton bt2 = new JButton("stop"); ``` 接下来,获取了窗口的内容面板,并创建了两个`JButton`对象,分别用于播放和停止音频。 ```...

    Api-aws-serverless-java-container.zip

    Api-aws-serverless-java-container.zip,一个Java封装器,用于在AWS lambda无服务器Java容器中运行Spring、Jersey、SCAP和其他应用程序。,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...

    5JAVA编程高级-GUI编程.pdf

    Container contentPane = frame.getContentPane(); contentPane.add(new JButton("点击我")); // 添加按钮 ``` #### 布局管理器 布局管理器负责控制组件在容器中的排列方式,这对于实现一致且美观的用户界面至...

    用JAVA 做聊天室

    Container con = getContentPane(); con.setLayout(new FlowLayout()); ``` - `FlowLayout`是一种简单的布局管理器,它将组件水平放置,直到一行放不下再换行。 #### 5. 按钮点击事件处理 ```java public void ...

    java-container

    适用于Java的Google Kubernetes Engine客户端 Java惯用客户端。 快速开始 如果您将Maven与一起使用,请将其添加到pom.xml文件中。 < groupId>com.google.cloud</ groupId> < artifactId>libraries-bom ...

    java的qq聊天程序教程

    ### Java的QQ聊天程序教程知识点总结 #### 一、Java GUI基础:AWT与Swing 在Java中,创建图形用户界面(GUI)主要通过两个包:`java.awt`(Abstract Window Toolkit,抽象窗口工具包)和`javax.swing`。其中,...

    JAVA 计算器程序代码

    Container c = jf.getContentPane(); c.setLayout(new FlowLayout()); c.add(tx); ``` 通过`FlowLayout`布局管理器将所有组件添加到容器中,确保它们能够按顺序排列。 ### 7. 添加按钮监听器 ```java for (int i =...

    QQ程序java开发实例及详解

    ### QQ程序Java开发实例及详解 #### 一、概述 本文档主要介绍如何使用Java语言进行QQ程序的开发,特别是从界面设计入手的过程化编程。文章通过一系列的示例代码来帮助初学者理解如何构建一个基本的图形用户界面...

Global site tag (gtag.js) - Google Analytics