`

java简介以及迅速了解java(十四)

阅读更多

集合类
集合(集合类的对象)是管理其他若干对象的,类似于C++标准模板库中的容器,不过JAVA的集合类的对象中可以存放多种类型的对象。
接口和类共同构成了一个集合框架,集合的概念,一个对象可以装载多个对象,就是集合对象。
集合框架
1,集合接口
Collection接口
List接口
Set接口
SortedSet接口

Collection 存储并管理多个对象的对象,集合中的每个元素都是对象。
Map,Map中没有对象,而是键值对,由Key,value组成的键值对,Key是不可重复的。value是可以相同
的,Key和value是一一对应的。

集合中用到的类,接口在java.util包中,使用时注意将其引入import。
Collection 接口(以下介绍其子接口)
1)List ,一个List的实现类的对象在管理多个对象时会按顺序组织对象(即按照将对象放入的顺序存储),List实现类的对象是有顺序的,List实现类对象中的内容是是可重复的。(注意,顺序和排序的区别)
2)Set ,一个Set的实现类表示一个数学概念上的集合,Set的实现类的对象中的元素是无顺序的,也就是不会按照输入顺序来存放,Set的实现类对象中的元素是不重复的
3)SortedSet,他是Set的子接口,他的实现类会对集合中的元素进行排序。但是要指定排序规则,他会按排序规则进行排
序。

Map 接口(以下介绍其子接口)
Map接口
SortedMap接口
SortedMap,这个接口的实现类同样可以实现,不过是对键值对中的Key进行排序,这个接口的实现类也是要指定排序规则的。
JDK1.4中的集合是不安全的对象,JDK5.0中解决了这个问题。
2,接口的实现类
List接口的实现类
List接口
ArrayList类
LinkedList类
Vector类

1) ArrayList是接近于数组功能的集合类,ArryList的实质就是一个会自动增长的数组,ArrayList是用封装的数组来实现
的List接口
的。
Collection的实现类对象的遍历方式是用迭代来实现的。
在使用迭代器时先要获得一个迭代器的对象,Iterator(迭代器接口)这是一个接口,迭代器是在集合类中实现的,也就是
说,他是一个内部类(匿名内部类)实现的
Iterator接口中定义的常用方法方法hasNext(),next()。
hasNext(),这个方法会使用一个游标,并通过判断游标指向的位置是否存放有对象。
next()方法也是Iterator接口中定义好的方法,这个方法会使游标指向下一个元素的位置,游标会跳过第一个元素,并返回其中的内容。

Collections(注意,这个不是Collection接口) 这是一个工具类,也是java.util包中的,这个类中的sort(list接口的实现类的对象)方法,其参数是一个集合类的对象,这个方法使用来对集合类的对象进行排序的。以后,我将以集合这个名字来称呼集合类的对象。,对于字符串对象内容的集合来说会按字典顺序排序(升序),对于数字内容的集合排序也会按照升序排序。
集合排序
排序可以分为两部分内容,一个是排序的规则,也就是按照什么来进行排序,并且排成什么样的顺序。第二个就是排序的算
,他决定了排序的效率。
在对自定义的集合内容类型排序时,需要先定义那个类型的排序规则。
Comparable接口,这个接口中只定义了一个compareTo(Object o),方法的返回值类型是整型,如果当前对象大于参数对象就返回正数,当前对象等于参数对象是就返回0,当前对象小于参数对象时就返回负值,这样写就是升序排列,反之则是进行降序排列,在实现这个接口中的方法时,返回值定义方式,只有这两种。
根据指定类型的排序规则实现了Comparable接口,那么就可以对存有这个类型的集合进行整体排序。Comparable接口,也叫做可比较接口。这个接口在java.lang包下。只要实现了这个接口,就是可排序的。
接下来介绍另外一种对自定义类型对象的集合整体排序的方法,也就是实现比较器接口(Comparator),这个接口中定义
了一个compare(Object o1,Object o2)方法来比较两个对象,这个方法的返回值定义和上面介绍的那个方法是一样。
注意:在API,帮助文档中以上两个方法的参数类型是T,这代表的模板类型,也就是集合中存放的内容的类型,在JDK1.4中其参数就是Object类型,模板类型的详细内容会在最后的JDK5.0新特性中讲到。
Comparator接口可以在匿名内部类中实现,Collections 中的sort(集合了的对象,比较器)方法,可以对自定义类型内容的集合进行整体排序。
集合排序的实例:

public class Employee implements Comparable{
private String name;
private int age;
private double salary;
public Employee(String name, int age, double salary) {
super();
// TODO Auto-generated constructor stub
this.name = name;
this.age = age;
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String toString() {
return name+" "+age+" "+salary;
}
public int compareTo(Object o){//默认是升序排列,也可以使用降序
Employee e=(Employee)o;
if (this.age<e.getAge()) return 1;
else if (this.age()>e.getAge()) return -1;
else if (this.salary()<e.getSalary()) return 1;
else if (this.salary>e.getSalary()) return -1;
else return this.name.compareTo(e.getName());
}
}

 

import java.util.*;
public class TestEmployee {
public static void main(String[] args){
List l=new ArrayList();
l.add(new Employee("Liucy",40,2000));
l.add(new Employee("Hiloo",40,8000));
l.add(new Employee("Chenzq",18,300));
l.add(new Employee("George",45,10000));
l.add(new Employee("BaoJie",18,300));
Collections.sort(l);}}

 

分享到:
评论

相关推荐

    Java核心编程Java 课件ppt

    1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...

    JAVA语言快速入门

    接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...

    内含几十个优秀Java简历模板 1-3年适用

    本资源包含几十个精心设计的Java简历模板,旨在帮助这个阶段的程序员更好地突出自己的专业能力,提高面试机会。 这些简历模板通常会涵盖以下几个关键部分: 1. **基本信息**:包括姓名、联系方式(电话、邮箱)、...

    java快速导出几十万百万生成DBF文件数据后台内附有javadbf.jar

    本文将深入探讨如何使用Java来快速导出大量数据到DBF文件,以及如何利用`javadbf.jar`库进行高效操作。 首先,DBF文件是基于dBase III、IV或FoxPro等早期数据库管理系统的文件格式。它以ASCII文本存储表格数据,...

    JAva资源网站大全

    这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...

    java快速导出几十万百万生成DBF文件数据后台

    首先,我们需要了解Java处理大量数据的基本策略。在Java中,处理大数据的关键在于优化内存管理和批量操作。对于几百万条记录的数据,一次性加载到内存中可能会导致内存溢出,因此通常采用分批读取、流式处理或使用...

    2022年应届生java简历范文.docx

    * Java开发职业发展道路:了解Java开发职业的发展道路,如从初级开发到高级开发的发展过程。 * Java开发职业规划:了解Java开发职业的规划,如职业发展目标、职业发展方向等。 * Java开发职业技能:了解Java开发职业...

    java脚本 快速学习

    "java脚本 快速学习"的压缩包可能包含了各种教程、示例代码和练习,帮助初学者快速掌握Java中的脚本使用和JavaScript的基本语法。建议从以下几个方面入手: 1. 学习JSAPI的使用方法,了解ScriptEngine接口和...

    java四层架构报表的生成

    本项目提供了一个基于Java四层架构的报表生成示例,旨在帮助开发者快速理解和实现报表功能。 1. 表现层(Presentation Layer): 这是用户与应用程序交互的界面,负责接收用户输入,展示结果,并将用户的请求传递给...

    Java2Pas(Java代码转换成Delphi代码)

    下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...

    Java croe java 思想

    通过阅读《Java核心编程思想》,读者不仅能全面掌握Java语言,还能了解到许多最佳实践和设计模式,从而在实际项目开发中游刃有余。这本书的2010最新版可能还包含了Java新特性的介绍,比如Java 7和8的Lambda表达式、...

    Java程序设计语言-第4版.pdf

    3. 集合框架:了解Java集合框架的知识,包括List、Set、Map等接口以及它们的实现类,对于编写高效的数据结构操作代码非常重要。 4. 异常处理:Java异常处理机制是保证程序健壮性的基础,理解throw、throws、try、...

    韩顺平30天学java

    《韩顺平30天学Java》是一门针对初学者设计的Java编程课程,旨在帮助学员在短短一个月的时间内掌握Java编程基础。该课程由知名IT教育专家韩顺平教授,以其独特的教学风格和深入浅出的讲解方式,使得复杂的编程概念变...

    JAVA API官方文档中文版

    对于初学者来说,这是了解Java API的起点。 2. **类和接口**:这是文档的主体部分,详细列出了Java平台提供的所有类和接口。每个条目都包含了类或接口的定义、构造方法、方法、常量等详细信息。例如,`java.lang....

    matomo-java-tracker:Matomo Tracking HTTP API的官方Java实现-源码

    了解Matomo Java Tracker有助于提升Java开发者在Web分析领域的专业技能,对于面试来说,可以展示对用户行为跟踪、数据分析以及如何将这些知识应用于实际项目的能力。以下是一些可能的面试问题: 1. 如何使用Matomo ...

    Java全栈学习路线及知识清单

    * Java基础语法:了解Java的基本语法结构,包括变量、数据类型、运算符、控制流语句、方法等 * 流程控制和方法:了解Java的流程控制语句和方法的使用 * 数组:了解Java的数组数据类型和操作 * 面向对象编程:了解...

    学习JAVA 快速学习JAVA

    1. **Java语言概述**:了解Java的历史、特性以及其在软件开发中的应用。Java是由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年创建的,现在由Oracle公司维护。它的主要特点包括平台无关性(Write Once...

    Java连接SybaseSqlAnywhere数据库驱动以及Demo

    首先,我们需要了解Java数据库连接(JDBC)API,这是Java与数据库交互的标准接口。Java通过JDBC驱动程序与特定数据库通信。对于Sybase SQL Anywhere,我们需要的是对应的JDBC驱动,这里提供的`jconn3.jar`就是Sybase...

    java基础教程ppt

    1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...

Global site tag (gtag.js) - Google Analytics