集合.docx

上传人:b****1 文档编号:3328151 上传时间:2023-05-05 格式:DOCX 页数:11 大小:17.91KB
下载 相关 举报
集合.docx_第1页
第1页 / 共11页
集合.docx_第2页
第2页 / 共11页
集合.docx_第3页
第3页 / 共11页
集合.docx_第4页
第4页 / 共11页
集合.docx_第5页
第5页 / 共11页
集合.docx_第6页
第6页 / 共11页
集合.docx_第7页
第7页 / 共11页
集合.docx_第8页
第8页 / 共11页
集合.docx_第9页
第9页 / 共11页
集合.docx_第10页
第10页 / 共11页
集合.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

集合.docx

《集合.docx》由会员分享,可在线阅读,更多相关《集合.docx(11页珍藏版)》请在冰点文库上搜索。

集合.docx

集合

Java语言的集合

一、集合基本内容介绍

1.概念

集合可理解为一个容器,该容器主要指映射、集合、列表、数组和散列表等抽象数据结构。

容器包含有多个元素,这些元素通常是一些Java对象。

集合框架是针对上述抽象数据结构所定义的一些标准编程接口,主要是由一组精心设计的接口、类和隐含在其中的算法所组成,通过它们可以采用集合的方式完成对Java对象的存储、获取、操作以及转换等功能。

2.Arrays类

Arrays(数组)类是集合框架的一个成员类,其提供的功能主要对数组对象进行排序、搜索和填充操作。

Arrays类所提供的方法都是静态方法,可以直接通过类名加以引用。

Arrays类可以对Object,byte,short,int,long,float,double,char等类型的数组完成上述操作。

3.基本的集合接口

基本的集合接口是指Collection接口、List接口、Set接口和Map接口。

4.集合

集合(Set)是指一个不包含重复元素的对象集合,是数学上“集合”概念的一种抽象。

基于这样的概念,集合接口所定义的方法主要分为两类,一是集合和元素之间的方法;二是集合之间的方法。

HashSet类所创建的是一个无序的集合对象。

当需要从集合中有序地获取元素时,需TreeSet类来建立集合对象,需注意的是添加到TreeSet中的元素必须是可排序的。

5.列表

列表(List)是指一个有序的对象集合,也称为一个对象序列。

通过列表接口,可以利用整数索引(即元素在列表中的位置)对列表中的每个元素有准确的控制,包括访问特定位置的元素对象和查询特定的元素。

ArrayList类是通过数组方式来实现的,LinkedList类是通过链表结构来实现。

由于这两个类的实现方式不同,使得相关操作方法的代价也不相同。

一般说来,若对一个列表结构的开始和结束处有频繁地添加和删除操作时,较为理想的是选用LinkedList类所实例化的对象表示该列表,通常LinkedList对象表示堆栈或队列。

6.映射

映射(Map)接口是与Collection接口相并列的一个接口,该接口描述了不重复的键到值的映射。

一个映射对象中不能包含重复的键,且每个键只能映射到一个值。

HashMap类和TreeMap类是集合框架提供的Map接口的实现类。

在Map中插入、删除和定位元素,HashMap是最好的选择。

但如果需要按顺序遍历键,那么需选择TreeMap。

7.Collection类

Collection类提供了一些静态方法,通过这些静态方法可以对集合对象进行操作或返回集合对象。

8.枚举和迭代

枚举和迭代的功能是将一个集合对象中所有元素顺序列举出来,它们分别是由Enumeration接口和Iterator接口所定义。

两者之间既有相同之处,也存在不同。

目前Java语言编程中推荐用Iterator接口代替Enumeration接口。

9.历史集合类

历史集合类所指是在Java标准版1.2之间所定义的上些对集合进行操作的类定义,它们是Vector类、Dictionary类和Hashtable类。

二、程序举例

例1.Arrays类的排序实例

importjava.util.Arrays;

publicclassArraysDemo{

publicstaticvoidmain(String[]args){

String[]strings={"wall","parent","mother","grand","rain","sorry"};

Arrays.sort(strings);

for(inti=0;i

System.out.println(strings[i]);

}

}

程序运行结果:

grand

mother

parent

rain

sorry

wall

程序分析:

Arrays类的sort()方法是静态方法,可直接通过类名加以引用。

sort()方法默认升序排列。

请查API文档了解Arrays类及sort()方法。

例2.Vector类的简单应用

importjava.util.*;

publicclassVectorDemo{

publicstaticvoidmain(String[]args){

Vectorv=newVector();

v.add("苹果");

v.add(0,"香蕉");

v.add("芒果");

v.add("梨子");

v.add(1,"葡萄");

System.out.println(v);

Stringname=(String)v.get(3);

System.out.println(name);

}

}

程序执行结果:

[香蕉,葡萄,苹果,芒果,梨子]

芒果

程序分析:

Vector对象的创建、对象添加、对象获取和结果打印是该程序学习的重点。

例8.3利用Collection类给集合对象排序。

importjava.util.Vector;

importjava.util.Collections;

publicclassCollectionsDemo{

publicstaticvoidmain(String[]args){

Vectorv=newVector();

v.add("wall");

v.add("parent");

v.add("mother");

v.add("grand");

v.add("rain");

v.add("sorry");

Collections.sort(v);//Collections类的sort()方法是静态方法,可直接通过类名加以引用。

//sort()方法的默认排序规则是按字母顺序。

for(inti=0;i

System.out.println(v.elementAt(i));

}

}

程序运行结果:

grand

mother

parent

rain

sorry

wall

例8.4利用Collection类给集合对象排序。

importjava.util.Comparator;

importjava.util.Arrays;

publicclassCompareDemo{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

String[]strings={"wall","parent","mother","grand","rain","sorry"};

Arrays.sort(strings);

print(strings,"默认排序");

System.out.println();

//Arrays类的sort()方法可根据所定义比较器的不同,有不同的排序结果。

Arrays.sort(strings,newConvertComparator());

print(strings,"反向排序");

}

staticvoidprint(String[]args,Stringtitle){

System.out.println(title);

for(inti=0;i

System.out.println(args[i]);

}}

//比较器实现了Comparator接口,定义了compare()方法。

classConvertComparatorimplementsComparator{

publicintcompare(Objectb1,Objectb2)

{

Strings1=(String)b1;

Strings2=(String)b2;

returnpareTo(s1);

}

}

程序运行结果:

默认排序

grand

mother

parent

rain

sorry

wall

反向排序

wall

sorry

rain

parent

mother

grand

例8.5将ArrayList对象转换为一个数组对象

importjava.util.*;

publicclassToArray{

publicstaticvoidmain(String[]args){

ArrayLista1=newArrayList();

a1.add("wall");

a1.add("parent");

a1.add("mother");

a1.add("grand");

a1.add("rain");

a1.add("sorry");

//ArrayList对象的toArray()方法可将其所包含的元素转换到一个数组中。

Object[]b1=a1.toArray();

System.out.println("ArrayofObjecthaslength"+b1.length);

//ArrayList对象被转换为一个字符数组,用到了强制类型转换。

String[]s1=(String[])a1.toArray(newString[0]);

System.out.println("ArrayofStringhaslength"+s1.length);

for(inti=0;i

System.out.println(s1[i]);

}

}

程序运行结果:

ArrayofObjecthaslength6

ArrayofStringhaslength6

wall

parent

mother

grand

rain

sorry

例8.6利用HashMap保存复合对象

importjava.io.*;

importjava.util.*;

publicclassStudent{

privateStringid;

privateStringname;

privateintphoneNumber;

Student(StringaId,StringaName,intphone)

{

id=aId;

name=aName;

phoneNumber=phone;

}

publicStringtoString(){

return(id+":

"+name+":

"+phoneNumber);

}

publicstaticStringreadString(Strings)throwsIOException{

System.out.println(s);

BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));

//对标准输入流进行包装获得了缓冲输入流对象,目的是使用其readLine()方法,读取一行输入内容。

returnbuf.readLine();

}

publicstaticintreadInt(Strings)throwsIOException,NumberFormatException{

System.out.println(s);

BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));

Stringline=buf.readLine();

returnInteger.parseInt(line);

}

publicstaticvoidmain(String[]args){

Mapstudents=newHashMap();

//HashMap中所保存的是以学生的学号为键、学生对象为值而构成的映射结构。

Studentbill=newStudent("001","张晓",2345656);

students.put(bill.id,bill);

try{

intnumOfstudents=readInt("Howmanystudents?

");

Studentstd;

for(inti=0;i

std=newStudent(readString("EnterstudentID:

"),readString("EnterstudentName:

"),readInt("Enterphonenumber:

"));

students.put(std.id,std);

}

System.out.println("Studentsstoredinmapobject");

System.out.println(students);

System.out.println("\nSearchastudent");

System.out.println(students.get(readString("Enterastudentid")));

}catch(IOExceptione){

System.out.println("inputerror");

System.out.println(e.getMessage());

}catch(NumberFormatExceptione1){

System.out.println("inputerror");

System.out.println(e1.getMessage());

}

}

}

程序执行结果:

Howmanystudents?

2

EnterstudentID:

001

EnterstudentName:

李明

Enterphonenumber:

123456

EnterstudentID:

002

EnterstudentName:

张三

Enterphonenumber:

234567

Studentsstoredinmapobject

{001=001:

李明:

123456,002=002:

张三:

234567}

Searchastudent

Enterastudentid

001

001:

李明:

123456

展开阅读全文
相关搜索
资源标签


copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2