- 浏览: 319240 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (221)
- J2SE心得 (4)
- 经典帖子 (8)
- 亲身经历 (9)
- SSH框架 (12)
- 数据库 (10)
- java基础知识 (41)
- java解惑 (17)
- 软件测试 (0)
- JSP (6)
- JavaScript (8)
- jQuery学习 (12)
- 硬件知识 (1)
- 工具类 (14)
- 面试专题 (4)
- Struts2专题(学习) (14)
- Spring源码分析专题(学习) (15)
- JavaScript专题(学习) (8)
- ExtJs专题(学习) (6)
- Java Web快速入门——全十讲 (10)
- web前台 (1)
- J2ME手机方面 (1)
- 积累整理 (1)
- MyEclipse工具篇 (10)
- oracle (1)
- Android基础 (1)
最新评论
-
youjianbo_han_87:
上传成功后,无法跳转到success页面,会报2038和404 ...
Struts2使用FlashFileUpload.swf实现批量文件上传 -
showzh:
...
MyEclipse 怎么安装SVN插件 -
wpf523:
赞一个啊,楼主加油
一些比较复杂的运算符(二) -
独步天下:
request.getSession().getAttribute() 和request.getSession().setAttribute() -
HelloJava1234:
thank you
怎么改变MyEclipse默认的jsp打开方式
实现堆栈
1,数组(ArrayList,增删效率比较低,不适合)
2,LinkedList(实现堆栈的好方法)
3,java.util.Stack类,Stack是Vector的子类,Vector类是一个线程安全的(是一个重量级的类),并继承了Vector的方法,Verctor类(这个类也是List接口的实现类)和ArrayList的功能近乎相同。(不推荐使用Stack类来实现堆栈)。
Set接口的实现类
Set接口
SortedSet接口
TreeSet类
HashSet类
LinkedSet类
1)HashSet
Set的实现类的集合对象中不能够有重复元素,HashSet也一样他是使用了一种标识来确定元素的不重复,HashSet用一种算法来保证HashSet中的元素是不重复的,HashSet的底层实现还是数组。
Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返
回,HashSet会用Hash码值去和数组长度取模,模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。如果数组中的元素和要加入的对象的hashCode()返回了相同
的Hash值(相同对象),才会用equals()方法来判断两个对象的内容是否相同。
Hash算法是一种散列算法。
注意:所以要存入HashSet的集合对象中的自定义类必须覆盖hashCode(),equals()两个方法,才能保证集合中元素容不重复。在覆盖和hashCode()方法时,要使相同对象的hashCode()方法返回相同值,覆盖equals()方法再判断其内容。为了保证效率,所以在覆盖hashCode()方法时,也要尽量使不同对象尽量返回不同的Hash码值。
例:
要向HashSet中的添加自定义类型的对象并保证对象在HashSet中的唯一性的话,就要覆盖hashCode()方法
和equals()方法。
import java.util.*; public class TestSet { public static void main(String[] args) { Set s=new HashSet(); TarenaStudent s1=new TarenaStudent("Liucy",30); TarenaStudent s2=new TarenaStudent("Hiloo",29); TarenaStudent s3=new TarenaStudent("Chenzq",33); TarenaStudent s4=new TarenaStudent("Liucy",30); s.add(s1); s.add(s2); s.add(s3); s.add(s4); System.out.println(); print(s); } static void print(Collection c){ Iterator it=c.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } } class TarenaStudent{ String name; int age; public TarenaStudent(String name, int age) { super(); // TODO Auto-generated constructor stub this.name = name; this.age = age; } public String toString(){ return "Student: "+name+" age="+age; } public boolean equals(Object o){ System.out.println(this+" equals "+o); if (o==null) return false; if (this==o) return true; if (o.getClass()!=this.getClass()) return false; TarenaStudent t=(TarenaStudent)o; if ((this.name.equals(t.name)) && this.age==t.age) return true; else return false; } public int hashCode(){ return this.name.hashCode()+this.age; } }
结果:
Student: Liucy age=30 equals Student: Liucy age=30
Student: Chenzq age=33
Student: Liucy age=30
Student: Hiloo age=29
LinkedSet是Set接口的实现类,他的底层是用链表实现的,他的增删效率很高,常用于过滤重复对象。
SortedSet接口是Set的子接口。
TreeSet是SortedSet接口的实现类,他可以对集合中的元素进行排序。
要存放在TreeSet中自定义类的对象,这个类要么是已经实现了Comparable接口,要么是能给出Comparator比较
器,TreeSet可以自动过滤掉重复元素所以不用重载hashCode()方法,TreeSet会根据比较规则判断元素内容是否相
同,TreeSet会在元素存入世就进行了排序。(在TreeSet给出排序规则时,一定要注意对象内容相等的条件,一定要注意在
主观的认为两个对象内容相同时,才可以使用比较少的条件来进行判断)
在要排序时才使用TreeSet类(存储效率比较低),HashSet的存储效率比较高,在需要为HashSet的对象排序时,就可以把HashSet中的元素放入TreeSet。
Map接口的实现类
Map接口
SortedMap接口
TreeMap类
HashMap类
Hashtable类
Properties类
Map中只可以存放键值对(Key,value),其中Key是不可以重复的。Key和value是一一对应的。
HashMap,是Map接口的实现类,Key时无序存放的,其中Key是不可以重复的,它也是通过Hash码值来保证Key不重复的,Key和value是一一对应的。如果要加入的键值对和HashMap中键值对的Key是相同的就会将这个集合中的Key所队应的value值进行覆盖,在使用自定义类型作为Key时,那就是要覆盖hashCode(),equals()方法,也就是和HashSet中要放入自定义类型是的处理方法相同。这个类的对象是线程不安全的。
在遍历Map时,要使用其keySet()方法获得Key的一个Set集合,可以通过遍历这个Set,用get()方法来获得Key所对应
的value,也就遍历了Map。
Hashtable,也是Map接口的实现类,他和HashMap比较相似,只不过这个类对象是重量级的,是线程安全的。他不允
许Key和value为null。
Properties,这个类是Hashtable的子类,他的Key和value只能是字符串String类型。
SortedMap是Map的子接口
TreeMap,是SortedMap的实现类,他会按照Key进行排序。和TreeSet类一样,在使用自定义类作Key时,要用自定义类实现Comparable接口。
注意:其实HashSet底层就是一个HashMap,只不过其中的value值都是null值,而HashMap的底层是用数组实现的。
完整的集合框架
Collection接口
List接口
ArratList类
LinkedList类
Set接口
SortedSet接口
TreeSet类
HashSet类
LinkedSet类
Map接口
SortedMap接口
TreeMap类
HashMap类
Hashtable类
Properties类
发表评论
-
java 的split的用法
2010-01-20 13:05 1811Java split用法 java.lang.string.s ... -
java简介以及了解java(三六)
2009-08-14 14:50 824*1: 名为DoCallStuff类实现了Callable,S ... -
java简介以及了解java(三五)
2009-08-14 14:49 1141处理自定义注释的类例: import java.lang.r ... -
java简介以及了解java(三四)
2009-08-14 14:45 847JAVA5.0 的注释(Annotation) ... -
java简介以及了解java(三三)
2009-08-14 14:42 970泛型方法的定义把数组拷贝到集合时,数组的类型一定要和集合的泛型 ... -
java简介以及了解java(三二)
2009-08-14 14:40 733java5.0中的泛型说明增强了java的类型安全,可以在编译 ... -
java简介以及了解java(三一)
2009-08-14 14:38 940可变长的参数在java5.0中,可以使用一种变长参数,也就是例 ... -
java简介以及了解java(三十)
2009-08-14 14:37 795Java5.0的新特性自动装箱和自动拆箱自动封箱和自动拆箱,它 ... -
java简介以及了解java(二九)
2009-08-14 14:35 826反射反射,在运行时,动态分析或使用一个类进行工作。类对象,是一 ... -
java简介以及了解java(二八)
2009-08-14 14:33 893UDP socket这种信息传输方 ... -
java简介以及了解java(二七)
2009-08-14 14:32 829JAVA网络编程网络基础知识网络编程的目的就是指直接或间接地通 ... -
java简介以及了解java(二六)
2009-08-14 14:29 818ObjectInputStream和ObjectOutputS ... -
java简介以及了解java(二五)
2009-08-14 14:28 934BufferInputStream和BufferOutputS ... -
java简介以及了解java(二四)
2009-08-14 14:27 758Java中的I/O使用I/O流访问file中的内容。JVM与外 ... -
java简介以及了解java(二三)
2009-08-14 14:24 678基本输入输出所使用的类的介绍:FileInputStream和 ... -
java简介以及了解java(二二)
2009-08-14 14:23 740处理跨平台性对于命令 ... -
java简介以及了解java(二一)
2009-08-14 14:22 869死锁问题多线程不释放 ... -
java简介以及了解java(二十)
2009-08-14 14:21 859共享数据的并发处理多线程同时并发访问的资源叫做临界资源。多个线 ... -
java简介以及了解java(十九)
2009-08-14 14:19 800Java多线程编程进程,即运行中的程序,多任务操作系统中并发的 ... -
java简介以及了解java(十八)
2009-08-14 14:17 695在Java的图形编程中,所有动作(事件)都已经提供了相应的事件 ...
相关推荐
在Java项目开发中,验收与交接是至关重要的环节,确保项目的质量和稳定性,同时为后续的维护和升级奠定基础。此"java项目开发验收交接整套模板"提供了全面的指导材料,帮助开发者和团队规范地完成这一过程。以下是...
本示例中的"IT项目交接文档"着重于Java项目,旨在帮助接收者理解项目结构、功能、技术选型以及维护流程。 在Java项目交接过程中,以下知识点尤为重要: 1. **项目概述**:交接文档应包含项目的基本信息,如项目...
在本文中,我们将深入探讨Jacob组件,Java2Word的安装和使用,以及一些开发示例。 1. **Jacob组件简述**: Jacob全称为JAVA-COM Bridge,它提供了一个接口,使得Java开发者能够通过JNI(Java Native Interface)...
在Java开发中,良好的文档能够帮助开发者快速理解代码的功能、用途以及使用方法,从而提高开发效率。本文将详细阐述Java文档规范,并提供一些实践指导。 1. Javadoc介绍: Javadoc是Java语言内置的工具,用于自动...
Java物流配送管理系统毕业论文 本论文旨在设计和实现一个基于Java的物流配送管理系统,使用B/S结构,旨在提高物流公司的运营效率和降低成本。系统使用MyEclipse作为系统开发环境,使用Oracle作为后台数据库,使用...
本项目是一个快速入门Java框架的设计源码,旨在帮助应届生在没有任何Java框架基础、学习成绩中等或偏下的情况下,仅用2天时间即可入门并参与研发工作。项目包含811个文件,其中JavaScript文件244个、Java文件152个、...
在Java 5.0版本中,Java并发包引入了AQS框架,用于简化各种同步器的构建,例如互斥锁、读写锁、信号量、屏障、未来对象、事件指示器和交接队列等。这些同步器可以使用AQS框架快速构建,从而提高开发效率并减少实现的...
### Java的编程规范 #### 为什么要有编码规范 在软件工程中,编码规范的重要性不容忽视。根据统计,软件在其整个生命周期中的成本分配显示,大约80%的成本是用于后期的维护工作,而非初始的开发阶段。这意味着软件...
通过Java Web技术,可以实现员工信息的增删改查操作,方便管理者快速获取和更新员工资料。 2. 招聘管理:系统能够发布招聘信息,收集应聘者简历,进行初步筛选。此功能可以帮助企业更有效地寻找合适的候选人,减少...
本系统无论前端还是后端,其学习成本明显低于开源工作流引擎及附带流程设计器,能够快速上手前后端实现逻辑,更方便用户快速进行二次开发。本系统前端流程设计器,采用Vue ElementUI + 自研实现,支持可任意托拉拽与...
3. **工作交接清单**:交接清单应详尽无遗,包括每个模块的完成情况、负责人、开发时间和预期完成时间,以及对每个模块的评价,这有助于新接手者快速理解和评估项目进度。 4. **责任确认**:离职员工需签署文档,...
技术可行性上,Java和MyEclipse的组合提供了强大的开发支持,ORACLE数据库的稳定性和高效性确保了数据的安全存储和快速访问。由于系统设计思路清晰,对开发者的技术要求相对较低,便于理解和实现。因此,基于JAVA的...
Struts2的核心功能包括动作调度、结果渲染、请求处理以及强大的插件架构,这使得开发者可以轻松地处理用户请求,实现业务逻辑与展示层的分离,提高代码的可维护性和可扩展性。 SQL Server作为数据库管理系统,是...
管理员切换功能允许不同管理员在系统中快速切换,提供无缝的工作交接体验。 4. 读者管理 读者管理包括读者添加、修改、查询和删除。读者添加时,需输入图书证号、姓名、性别、系别和班级等信息。读者查询支持按图书...
在当今快速发展的社会背景下,尤其是信息技术的飞速发展,传统的物流运输方式已经不能满足现代社会的需求,亟需一种新型高效的物流管理模式来提升整体效率和服务质量。此基于Java的物流配送管理系统旨在通过构建一个...
- **代码交接**:很少有软件只由最初开发者维护,规范确保新接手者能快速理解代码。 - **可读性**:良好的代码风格提高代码可读性,利于团队沟通。 - **产品发布**:源码作为产品的一部分,需保持整洁且无误。 2...
《基于Java Web+SSM的中小型人力资源管理系统》是一款利用现代技术构建的企业级应用,主要针对中小型企业的人力资源管理需求。系统采用Java Web技术栈,结合Spring、SpringMVC和MyBatis(简称SSM)框架,实现了高效...
2. **技术提升需求**:Java程序员通常会寻求持续的技术提升,以适应快速变化的IT行业。如果长时间没有显著的技术进步,可能会感到不满并考虑离职。 3. **薪资待遇问题**:薪资待遇是员工满意度的重要组成部分。当...
- 代码交接:几乎不可能由最初开发人员一直维护软件,因此规范能让接手者快速理解。 - 可读性:良好的编码规范使代码更易读,降低理解难度。 - 代码质量:规范化的源码就像精心包装的产品,清晰无误。 - 执行...
1. 技术选型:项目选用Java作为主要开发语言,SpringBoot作为核心框架,它简化了Spring应用的初始搭建以及开发过程。SpringData JPA用于数据库操作,使得数据库访问更加简单直观。Thymeleaf作为模板引擎,提供了与...