JAVAOOP重点笔记总结_第1页
JAVAOOP重点笔记总结_第2页
JAVAOOP重点笔记总结_第3页
JAVAOOP重点笔记总结_第4页
JAVAOOP重点笔记总结_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章Java常用基础类

6.0本章目标

1.理解什么是Java基础类

2.熟练使用Java包装类

3.理解String类及字符串不变性

4.熟练使用StringBuffer类

5,熟练使用Random类

6.掌握Date类

7.熟练使用Calendar类构建日历

8.掌握SimpleDateFormat类用法

9.了解Math最终类

6.1什么是JAVA基础类

1.1Java基础类

>Sun公司提供了极其丰富的功能类,为了便于区分,根

据类的功能大致把这些类放在了不同的包内.

►如java.lang包、java.util包、java.io包、java.text包等

>对于初学者来说,最为常用的工具类有封装类、String.

StringBuffer、Random、Date、Calendar、SimpleDateFormat

土里解基Ml类:

如做一餐饭,我们可以调酱油(基础类),盐(基础类),蔬菜

(基础类),鱼(基础类)。

其中:酱油和盐属于调料(基础包)

蔬菜和鱼属于菜(基础包)

6.2JAVA包装类

6.2.1为什么需要包装类

在JAVA中提出了一种概念:一切皆对象,如果有此概念的话,则肯定有个

矛盾点:

基本数据类型是对象吗?肯定不是,那么此时如果要符合之前的理论,则

必须把基本数据类型进行包装

包装类把基本数据类型的数据封装为引用类型的对象,并提供了很多

有用的方法

>对于Java的基本数据类型,Sun公司均提供了对应的包装类

>所有的包装类均位于java.lang包下,而这个包会由JVM编译器在编译

时自动导入我们的程序,可以不用手工导入该包下的类而直接使用

基本数据类型能实现的包装类都可以实现。

思考下:为什么要保留基本数据类型的存在

6.2.2JAVA的8种包装类

基本数据类型对应包装类

booleanBoolean

byteByte

shortShort

intInteger

longLong

charCharacter

floatFloat

doubleDouble

6.2.3Integer包装类

Integer的属性

//i、属性。

//staticintMAX_VALUE:返回最大的整型数;

//staticintMIN_VALUE:返回最小的整型数;

//staticClassTYPE:返回当前类型。

//

//例子:

System.out.printin("Integer.MAX_VALUE:"+Integer.MAX_VALUE);

System.out.printIn("TYPE:"+Integer.TYPE);

Integer的构造函数

//Integer(intvalue):通过一个红^的类型构造对象;

//Integer(Strings):通过一个String的类型构造对象;

//

//例子:

Integeri=newInteger(“1234")”/生成了一个值为1234的工nteger对象。

IntegerY=newInteger(123)”/生成了一个值为1234的Integer对象。

Integer的方法

//intintValue()把工nteger转化为皿类型

//staticintparselnt(Strings)用于字符串转化为卫庄类型

//intcompareTo(Integeranotherlnteger)

//比较两个整数。相等时返回0;小于时返回负数;大于时返回正数。

//例子:

Integeri=newInteger(n1234n);

intc=Value();//把工cteg㊀r转化为类型

System.out.printin(c);

intc2=Integer.parselnt(n123n);//用于字符串转化为红J

Integery=newInteger(n123n);

intc3=pareTo(y);

6.2.4Character包装类

Character类在对象中包装一个基本类型char的值

注意:以下方法都是解■态方:去

isLetterOrDigit:判定指定字符是否为字母或数字

isLetter:判定指定字符是否为字母。

isUpperCase:判定指定字符是否为大写字符

isLowerCase:判定指定字符是否为小写字符

isDigit:判定指定字符是否为数字

toLowerCase:将给定字符映射为对应的小写字符,

toUpperCase:将字符参数转换为大写。

方法例子:

判断是否为数字或者字母

\f(Character.isLetterOrDigit(,a,))

(

System.out.println("是数字或者是字母)

}

判断是否为小写字母,是则转换成大写字母

if(Character.isLowerCase('a'))

{

System.out.println(Character.toUpperCase('a'));

)

6.3String字符串类

6.3.1String类初始化

由于String对象特别常用,所以在对String对象进行初始化时,Java提

供了一种简化的特殊语法,格式如下:

Strings="abc";

s="Java语言〃;

其实按照面向对象的标准语法,其格式应

该为:

Strings=newString("abc");

s=newString("Java语言”);

只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String

s=newString("abc");实际上创建了两个String对象,一个是"abc"对象,存储在常量

空间中,一个是使用new关键字为对象s申请的空间

6.3.2String的构造方法

构造器描述

String()构造一个空字符串对象

String(byte[]bytes)通过byte数组构造字符串对象

String(char[]chars)通过字符数组构造字符串对象

String(StringBufferbuffer)通过StringBuffer数组构造字符串对象

Stringss=newString("sds”);//构造方法1

System.out.printin(ss);

chardd[]=Ual1bl,c,};//构造方法2

Stringstr=newString(dd);

11

bytevv[]={a*,'bz构造方法2

Stringstr2=newString(vv);

StringBuffersb=newStringBuffer();//构造方法3

sb•append(nabccn);

Stringsss=newString(sb);

System.out.printIn(sss);

Stringssss=newString();//构造方法4

633String的常用方法

//(1)charAt方法

//该方法的作用是按照索引值获得字符串中的指定字符。

Strings=Mabcn;

charc=s.charAt(1);

//(2)compareTo方法

//该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比

较两个字符串的第一个字符,

//如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则

返回小于0的值,

//如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。

Stringss=nabcH;

Stringssl=nabdH;

intvalue=pareTo(ssl);

//则value的值是小于0的值,BP-lo

//(3)concat方法

//该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。例如:

Stringa=,fabcn;

Stringal="def”;

Strings2=s.concat(al);

//则连接以后生成的新字符串s2的值是“abcdef”

//(4)endsWith方法

//该方法的作用是判断字符串是否以某个字符串结尾,如果以对应的字符串结尾,则返回true。

Stringbl="student.doc”;

booleanbbl=s.endsWith(ndocn);

//则变量b的值是true。

//(5)equals方法

//该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false。

例如:

Stringd=Mabcn;

Stringdl=newString("abcH);

booleanbb=d.equals(dl);

//而使用"=="比较的是两个对象在内存中存储的地址是否一样

〃(6)getBytes方法

//该方法的作用是将字符串转换为对应的byte数组,从而便于数据的存储和传输。例如:

Stringsss="计算机";

byte[]e=s.getBytes();//使用本机默认的字符串转换为byte数组

byte[]e2=s.getBytes("gb2312”);〃使用gb2312字符集转换为byte数组

///在实际转换时,一定要注意字符集的问题,否则中文在转换时将会出现问题。

//(7)indexOf方法

//该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。

Stringsssss=nabcdedn;

intindex=sssss.indexOf(1d');

intindexl=sssss.indexOf('h1);

//则返回字符d在字符串s中第一次出现的位置,数值为3。由于字符h在字符串s中不存在,则

indexl的值是-1。

//(8)length方法

//该方法的作用是返回字符串的长度,也就是返回字符串中字符的个数。中文字符也是一个字

Stringsa=Habcn;

Stringsal="Java语言”;

intlen=sa.length();

intlenl=sal.length();

//贝变量len的值是3,变量工enl的值是6。

//(9)replace方法

//该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以

后,原来的字符串不发生改变:

Stringsb=nabcatn;

111

Stringsbl=sb.replace(a*zf);

//(10)split方法

//该方法的作用是以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后会获得一个

字符串数组

Stringsc=

Stringscl[]=sc.split(",n);

//该代码的作用是以字符串“,"作为间隔,拆分字符串S,从而得到拆分以后的字符串数字S1,其

内容为:{"ab","12","df")?,

//(11)startsWith方法

//该方法的作用和endsWith方法类似,只是该方法是判断字符串是否以某个字符串作为开始。例

如:

Stringsd=nTestGamen;

booleanb3=sd.startsWith(nTestn);

//则变量b的值是true。

//(12)substring方法

//该方法的作用是取字符串中的、'子串〃,所谓''子串〃即字符串中的一部分。例如“23”是字符串

“123”的子串。

Stringse="Test”;

Stringsei=se.substring(2);

//则该代码的作用是取字符串s中索引值为2(包括)以后的所有字符作为子串,则字符串si的值

是“匹“。

//(13)toCharArray方法

//该方法的作用和getBytes方法类似,即将字符串转换为对应的char数组。例如:

Stringsf=HabcH;

char[]ccc=sf.toCharArray();

//则字符数组。的值为:{।}。

//(14)toLowerCase方法

//该方法的作用是将字符串中所有大写字符都转换为小写。例如:

Stringsg=nAbC123n;

Stringsgl=sg.toLowerCase();

//则字符串si的值是“abcl23",而字符串s的值不变。

//(15)trim方法

//该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串。该方法不去掉

字符串中间的空格。

Stringsh="abcabc123

Stringshl=sh.trim();

//则字符串si的值为:"abcabc123”。字符串s的值不变。

//(16)valueOf方法

//该方法的作用是将其它类型的数据转换为字符串类型。需要注意的是,基本数据和字符串对象

之间不能使用以前的强制类型转换的语法进行转换。

intn=10;

Stringsee=String.valueOf{n);

//则字符串s的值是“10”。

6.4StringBuffer类

6.4.1为什么要用StringBuffer类

Stringsi=newString("hellon);

//将svse连接在si的后面

si.concat(nsvseH);

System.out.printIn(Hsl="+si);

//使用replace方法把s2中的字符。替换为u

Strings2=newString("goodmorning!n);

s2.replace(1o*,*u1);

System.out.printIn(ns2="+s2);

因为字符串具有不变性:

一个字符串一旦创建,这个存放字符串的值的内存空间,将不能改变。

6.4.2StringBuffer的构造方法

1、构造函数。

StringBuffer():构造一个没有任何字符的StringBuffer类。

StringBuffer(intlength)::构造一个没有任何字符的StringBuffer类,并且,其长度为

lengtho

StringBuffer(Stringstr):以str为初始值构造一个StringBuffer类。

StringBuffers=newStringBuffer();

//这样初始化出的StringBuffer对象是一个空的对象。

StringBuffers=newStringBuffer(Habcn);

//这样初始化出的StringBuffer对象的内容就是字符串〃独

//StringBuffer对象和String对象之间的互转的代码如下:

Strings=nabcn;

StringBuffersbl=newStringBuffer(n123H);

StringBuffersb2=newStringBuffer(s);//String转换为StringBuffer

Stringsi=sbl.toString();//StringBuffer转换为String

6.4.3StringBuffer类的常用方法

//StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是

StringBuff6r和String类的主要区别。

〃1、append方法

//publicStringBufferappend(booleanb)

//该方法的作用是追力口内容至lj当前StringBuffer对象的末尾,类似于字符串的连接。调用该

方法以后,StringBuff㊀r对象的内容也发生改变,例如:

StringBuffersb=newStringBuffer(nabcn);

sb.append(true);

//则对象sb的值将变成〃abctru㊀〃。

//使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连

接,例如:

StringBuffersb=newStringBuffer();

Stringuser="test”;

Stringpwd="123”;

sb.append(Hselect*fromuserinfowhereusername="}_

sb,append(user);

sb.append(nandpwd=n);

sb.append(pwd);

//这样对象也的值就是字符串''select*fromuserinfowhere

username=testandpwd=123〃。

〃2、deleteCharAt方法

//publicStringBufferdeleteCharAt(intindex)

//该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:

StringBuffersb=newStringBuffer(HTestn);

sb,deleteCharAt(1);

//该代码的作用删除字符串对象曲中索引值为1的字符,也就是删除第二个字符,剩余的内

容组成一个新的字符串。所以对象sb的值变为"Tst”。

〃3、insert方法

//publicStringBufferinsert(intoffset,booleanb)

//该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

StringBuffersb=newStringBuffer(nTestStringn);

sb.insert(4ffalse);

//作用是在对象他的索引值4的位置插入false值,形成新的字符串,则执行以后对象他的值

是"TestfalseString”。

//4、reverse方法

//publicStringBufferreverse()

//该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:

StringBuffersb=newStringBuffer(Habcn);

sb.reverse();

//经过反转以后,对象sb中的内容将变为“cb”。

//5、setCharAt方法

//publicvoidsetCharAt(intindex,charch)

//该方法的作用是修改对象中索引值为index位置的字符为新的字符生。例如:

StringBuffersb=newStringBuffer(nabcn);

sb.setCharAt(1,'D');

//则对象他的值将变成〃aDc〃。

//6、trimToSize方法

//publicvoidtrimToSize()

//该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少

空间的浪费。

6.5Random随机类

6.5.1Random简介

Random类(java.util)

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机

时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,

从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也

就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第

二次生成的随机数字也完全相同。

6.5.2Random的构造函数

Random类包含两个构造方法。

a、publicRandom()

该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子

数,然后使用这个种子数构造Random对象。

b、publicRandom(longseed)

示例代码:

Randomr=newRandom();

Randomrl=newRandom(lO);

6.5.3Random常用方法

1、publicbooleannextBoolean()

//该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是

都是50%的几率。

2、publicdoublenextDoxible()

//该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

3、publicintnextlnt()

//该方法的作用是生成一个随机的血值,该值介于int的区间,也就是-231到231-1之

间。

4、publicintnextlnt(intn)

//该方法的作用是生成一个随机的卫生值,该值介于[0,n)的区间,也就是0到n之间的随

机int值,包含0而不包含n。

5、publicvoidsetSeed(工ongseed)

//该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象

和相同种子数使用new关键字创建出的Random对象相同

6.5.4Random使用案例

//输出,0-100的100个随机数

Randomrl=newRandom();

for(inti=0;i<100;i++)

(

inta=rl.nex七工nt(100);//指定在100以内随机

System.out.printIn(a);

)

6.6Math算术运算类

6.6.1Math类简介

►Math类中的静态方法帮助我们完成基本的数学运算

6.6.2Math常用方法

//绝对值

System.out.printIn(Habsof-1:n+Math.abs(-1));

//比这个数大的最小整数

System.out.printIn(Hceilof9.01:”+Math.ceil(9.01));

//比这个数小的最大整数

System.out.printIn(nfloorof9・99:”+Math.floor(9.99));

//取较大者

Hn

System.out.printIn(themaxis:+Math.max(101f276.001));

//随机数,区间为[0.0,1.0)

System.out.printIn(nrandomnumber:n+Math.random());

//四舍五入

System.out.printIn("roundvalueof9.49:"+Math.round(9.49));

//返回正确舍入的double值的正平方根

System.out.printIn(Hsquarerootof225:”+Math.sqrt(225));

6.7Date时间类

6.7.1Date类简介

TDate类⑦-----』

,类Date表示特定的瞬间,精确到毫秒。Date类是通过记录从基准时间

(格林威治标准时间公元1970年1月1日00:00:00)开始到当前时刻的时

间差,即所经历的亳秒数来计时的。

6.7.2Date类的构造方法

Datedatel=newDate();//得到系统当前时间

Date=newDate(1233997578421L);//参数是毫秒,LONG类型,

得到是从1970.1.1日0点0分0秒经过1233997578421L毫秒后的日期

6.7.3Date类常用方法

Datedatel=newDate();

Datedate2=newDate(1233997578421L);

//输出datel、date2对象所对应的毫秒数

System.out.printin(datel.getTime());

System.out.printin(date2.getTime());

After()方法,比较2个日期的大小

//查看datel是否在date2后

booleanisAfter=datel.after(date2);

System.out.printIn(nisdatelafterdate2:n+isAfter);

datel.setTime(1133997578421L);

isAfter=datel.after(date2);

System.out.printIn(Hisdatelafterdate2:n+isAfter);

getTime。方法返回Date对象的long值(毫秒数)

Datenow=newDate();

longnowLong=now.getTime();

System,out.printin(f,Valueis"+nowLong);

6.8SimpleDateFormat日历格式化

6.8.1SimpleDateFormat简介

11期格式化类SimpleDateFormat:创建格式化对象、11期转

换为字符串、字符串转换为H期。

6.8.2SimpleDateFormat的构造方法

6.8.3SimpleDateFormat常用方法

将日期类型转化为指定格式的字符串

Format方法

Datedt=newDate();

SimpleDateFormatmyFmt=newSimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");

Stringdate_str=myFmt.format(dt);

System.out.printIn(datestr);

将字符串转化为日期类型

Parse方法

SimpleDateFormatformat=newSimpleDateFormat(ndd/MM/yyyyn);

Datedate=null;

date=format.parse(n22/12/2011n);

System.out.printin(date);

6.9Calendar日历类

6.9.1Calendar简介

Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、

DAY_0F_M0NTH,HOUR等日历字段之间的转换提供了一些方法。

Calendar类是一个抽象类,不能直接通过new关键字创建Calendar类的实

例,可以借助于该类提供的静态方法getlnstance。来获得一个Calendar对象

6.9.2Calendar类常用方法

1,Calendar转化为date类型

Calendarcal=Calendar.getlnstance();//得至!J的是当前时间

Datedate=cal.getTime();

System.out.printin(date);

//给日历设置个指定时间,用setTime()方法

SimpleDateFormatformat=newSimpleDateFormat(ndd/MM/yyyyn);

Datedatel=null;

datel=format.parse("22/12/2011");

Calendarcal=Calendar.getlnstance();

cal.setTime(datel);

Datedate=cal.getTime();

System.out.printin(date);

//(2)Date转化为Calendar

Datedate=newDate();

Calendarcal=Calendar.getlnstance();

cal,setTime(date);

“Calendar类的静态办法getlnstance()可以初始化一个日历对象:Calendarnow二

Calendar,getlnstance();

可以应用下面三个办法把廿历定到任何一个时候:

//set(intyear,intmonth,intdate)

//set(intyear,intmonth,intdate,inthour,intminute)

//set(intyear,intmonth,intdate,inthour,intminute,intsecond)

〃设置日历,和获得日历中年月日方法

Calendarnow=Calendar.getlnstance();

now.set(2012,4,5);

Datedtl=now.getTime();

System.out.printin(now.get(Calendar.YEAR));

System.out.printin(now.get(Calendar.MONTH));

System.out.printin(now.get(Calendar.DATE));

//add方法,改变年月日

//get(intfield)返回给定日历字段的值

Calendarca=Calendar.^etlnstance();

System.out.printIn(Hyearis:"+ca.get(Calendar.YEAR));

ca.add(Calendar.YEAR,2);//为年份增加11

System.out.printIn(nyearis:H+ca.get(Calendar.YEAR));

ca.set(Calendar.YEAR,2009);//设置ca的年份

System.out.printIn(nyearis:n+ca.get(Calendar.YEAR));

//今天是今年的第几天

System.out.printIn(Hdayofyear:n+ca.get(Calendar.DAY_OF_YEAR));

//今天是本周的第几天,注意默认情况下周日是第一天

System.out.printin(Hdayofweek:n+ca.get(Calendar.DAY_OF_^EEK));

//获得X寸应的Date对•象

Datedate=ca.getTime();

System.out.printIn("datetime:H+date.getTime());

System.out.printIn(ncalendartime:"+ca.getTimelnMillis());

第7章集合框架和泛型

7.0本章目标

1.理解集合框架

2.掌握ArrayList与LinkedList类

3.掌握HashMap与LinkedHashMap

4.掌握Iterator类

5.掌握Collections类和Arrays类

7.1Java集合框架(JCF)

7.1.1为什么需要集合框架

・某软件公司有25名软件工程师,如需在程序中保存软件工程师

的信息,如何解决??

使用数组

>使用数组的弊端

数组的长度固定,不能动态改变

数组中元素的插入、排田等操作复杂

使用集合

■将多个元素组成一个单元的对象

■用于存储、检索、操纵和传输数据

♦:集合框架

■提供用于管理对象集合的接口和类

■包括接口、实现和算法

所有集合类都位于java.util包下

什么是集合框架类(集合):

在JAVA中的一些特殊的类,内部可以存放多个各种数据类型

的元素的类。(不定长),每个集合都是个容器。

7.1.3集合框架里的接口

接口体系结构

(其实Collection下还有Queue接口,暂时本章不学)

Map、List、Set等三种集合类型的存储示意图

(如果哪个集合类实现了某这3个接口种1个,该集合类就属于

这一集合类别)

集合类主要有4种类型的总结:

集合分类集合类说明

Set(集)HashSet,TreeSet对象不按特定方式排序,只是简单把对象

放入集合中,如小孩的书包(不允许重复)

Queue(对列)

7.1.4整个集合框架图

LinkedListLinkedHashList

(Class)(Class)

7.2集合框架中接口详解

7.2.1Collection接口

Collection接口简介

Collection本集合翘架中的根接口。Collection表示一组对象,这些对

象也称为collection的元素;。一些collection允许有重复的元素,而另--些

则不允许。一些collection是有序的,而另一些则是无序的。

JDK不提供此接口的任何直度实现:它提供更具体的了接口(如Sei和

List和Queue)实现。

注意Map不是Collection的子接口

Collection的方法

返回值类型方法和备注

booleanadd(Ee)

确保此collection包含指定的元素(可选操作)。

booleanaddAII(Collection<?extendsE>c)

将指定collection中的所有元素都添加到此collection中(可选操作)。

voidclear0

移除此collection中的所有元素(可选操作)。

booleancontains(Object0)

如果此collection包含指定的元素,则返回true。

booleancootainsAII(Collection<?>c)

如果此collection包含指定collection中的所有元素,则返回true。

booleanequals(objecto)

比较此collection与指定对象是否相等。

inthashCode()

返回此collection的哈希码值。

booleanisEmptyO

如果此collection不包含元素,则返回true。

]terator<E>iterator0

返回在此collection的元素上进行迭代的迭代器。

booleanremove(Objecto)

从此collection中移除指定元素的单个实例,如果存在的话(可选操作)。

booleanremovvAII(Collection<?〉c)

移除此collection中那些也包含在指定collection中的所有元素(可选操

作)。

booleanretainAII(Collection<?>c)

仅保留此collection中那些也包含在指定collection的元素(可选操作)。

intsize0

返回此collection中的元素数。

Object[]toArrayO

返回包含此collection中所有元素的数组。

<T>T[]toArray(Tfla)

返回包含此collection中所有元素的数组;返回数组的运行时类型与指定数

组的运行时类型相同。

7.2.2List接口

List接口简介

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能

够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java

的数组。

和下面要提到的Set不同,List允许有相同的元素。

除了具有Collection接口必备的iterator。方法外,List还提供一个listlterator()方法,

返回一个Listiterator接口,和标准的Iterator接口相比,Listiterator多了一些add()之类的方

法,允许添加,删除,设定元素,还能向前或向后遍历。

实现List接口的常用类有LinkedList,ArrayList,Vector和Stacko

7.2.3Set接口

Set接口简介

Set是一种不包含重复的元素的Collection,即任意的两个元素el和e2都有

el.equals(e2)=false,Set最多有一个null元素。

Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。

7.2.4Map接口

Map接口简介

Map没有继承Collection接口,Map提供key到value的映射。~•个M叩

中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的

视图,M叩的内容可以被当作一组key集合,一组value集合,或者一组key-value

映射。

7.3ArrayList类

7.3.1ArrayList简介

ArrayList就是传说中的动态数组

ArrayLis比较简单,就是对一个数组的一系列操作,比如添加一个元素后如果容量满

则扩容操作、删除一个元素后使数组后面的元素像前移操作、

►特点如下:

。大小是可变的,是自动增长的。可以动态的增加或减少元素。

°实现了IColletion和IList接口。

。它是非同步的集合类。(多个线程同时访问)

。元素可以重复

ArrayList存储数据采用的线性表的方式

▼[-▼------1131

3231221

目下标0123456789

时,第一趟排序结果如下:~

1233221311

且下标0123456789

7.3.2ArrayList的常用方法

常用方法1:

//创建ArrayList对象

ArrayListall=newArrayList();

System.out.printin(all.isEmpty());

all.add("zhangsan”);//添力I」元素

all.add(newperson(nlisin,22));

all.add(1,newperson("wangwuH,33));

all.add(newInteger(3));

//all.addAll(all);//添力口集合

//按索引删除元素

//all.remove(1);

//按内容删除

//all・remove("zhangsan");

//整块删除

//all.subList(0,2).clear();

all.clear();//清空集合

System,out.printIn(narraylist的大,卜是:n+all.size());

常用方法2:

Hn

personpl=newperson(lisiz22);

personp2=newperson("wangwu",33);

//创建ArrayList对象

ArrayListall=newArrayList();

System.out.printIn(all.isEmpty());

all.add("zhangsan");//添力口元素

all,add(pl);

all,add(Lp2);

all.add("lisi");〃添加元素

all.add(new工nteger⑶);

all,add(p2);

intindexl=all.indexOf(p2);//求某个元素所在的位置

System.out.printin(indexl);

intd=all.last工ndexOf(p2);//最后一个p2的索弓I

System.out.printin("最后一个p2的索弓I:"+d);

//判断是否存在某个元素

booleanisl=all.contains(p2);

System.out.printIn(isl);

//按索引获得某个元素

System.out.printin("第1个元素是个字符串:.get(0));

System.out.printin("第2个元素是person对象,属性是:

”+((person)all.get(1)).name);

}

ArrayList的遍历的方式

方法Lfor循环

//仓II建ArrayList对象

ArrayListall=newArrayList();

all,add(uaaaan);

all.add(Mcccn);

all,add(pl);

for(inti=0;Kall.size();i++)

(

System.out.printin(all.get(i));

方法2for(javase5后新特性)

//方法2

ArrayListall=newArrayList();

all.add(“zhangsan”);//添加元素

all.add(”lisi”);〃添力II元素

all・add(newperson(11));//添力口元素

all.add(”wangwu”);//添加元素

for(Objecttmp:all)

(

System.out.printin(tmp);

}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论