java类库和常用类简介_第1页
java类库和常用类简介_第2页
java类库和常用类简介_第3页
java类库和常用类简介_第4页
java类库和常用类简介_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

1、java类库和常用类简介类库和常用类简介n类库简介类库简介nJava语言基础类库语言基础类库nString类和类和StringBuffer类类n常用工具类库常用工具类库类库简介njava.lang它是由编译器自动引入的它是由编译器自动引入的,包包括括:Object类类,数据包装类数据包装类,数学类数学类,异常处理类异常处理类,线程类线程类,字符串处理类字符串处理类,系统及运行类系统及运行类,类操作类类操作类等等;njava.applet用于创建小程序;njava.awt用于创建图形用户界面;njava.io输入输出流网络包,用于网络通讯njava.util实用程序包,提供许多不同功能的类,如日

2、期时间类,矢量类,数据结构类等Java 中的Math类 nMath 类 数学类包含了许多数学函数,如sin、cos、exp、abs等。Math类是一个工具类,它在解决与数学有关的一些问题是有着非常重要的作用。n 这个类有两个静态属性:E和PI。E代表数学中的e 2.7182818,而PI代表派pi 3.1415926。n引用时,用法如:Math.E 和 Math.PiJava 中的Math类n这个类的方法有:n public static int abs( int a )n public static long abs( long a )n public static float abs( f

3、loat a )n public static double abs( double a )n abs方法用来求绝对值。n Java 中的Math类n public static native double sin( double a )n sin求正弦函数。n public static native double tan( double a )n tan求正切函数。n atan求反正切函数。npublic static native double cos( double a )n cos求余弦函数。nJava 中的Math类npublic static native double ceil

4、( double a )n ceil返回 最小的 大于a的整数。(天花板)npublic static native double exp( double a )n exp求e的a次幂。npublic static native double floor( double a )n floor返回 最大的 小于a的整数。npublic static native double log( double a )n log返回lna。Java 中的Math类npublic static native double pow( double a, double b )n pow求a的b次幂。npublic

5、 static native double sqrt( double a )n sqrt求a的开平方。npublic static synchronized double random()n 返回0到1之间的随机数。npublic static round(double d)npublic static round(float f)n 取整,四舍五入Java 中的Math类npublic class MathDemo npublic static void main(String args)n System.out.println(Math.ceil(3.45);n System.out.pr

6、intln(Math.floor(3.55);n System.out.println(Math.round(3.35);n System.out.println(Math.round(3.5);n System.out.println(Math.random();n n随机数类java.util.Random nRandom() 创建一个新的随机数生成器。Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。随机数类java.util.RandomnnextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布

7、的 double 值。 nnextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值 随机数类java.util.RandomnnextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 nnextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 String类和类和StringBuffer类类 字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象来

8、处理。程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串字符串常量常量;另一类是创建之后允许再做更改和变化的字符串变字符串变量量。对于字符串常量,由于程序中经常需要对它做比较,搜索之类的操作,所以通常把它放在一个具有一定名称的对象之中,由程序对该对象完成上述操作。 在Java中,存放字符串常量的对象用String类,对于字符串变量,由于程序中经常需要对它做添加,插入,修改等操作,一般存放在StringBuffer类的对象中。字符串字符串String字符串常量使用双引号括住的一串字符,比如: Hello world! Java编译器自动为每一个字符串常量生成一个Str

9、ing类 的实例,因此可以用字符串常量直接初始化一个String对 象,如: String s=Hello world! ;要创建类String的一个对象并进行初始化,需要调用类String的构造方法。类String中提供了下面的一些构造方法:String( ):无参数的缺省的构造方法用来创建一个空串。 String s = new String( ); String( String value):利用已经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。 String s=new String(“hello”);String( char value ):通过给

10、构造方法传递一个字符数组可以创建一个非空串。char chars = a , b , c ; String s = new String( chars ) ; 3、字符串、字符串String:创建:创建String( char , int startIndex, int numChars ):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。char chars = a , b , c , d , e , f ;String s = new String ( chars , 2 , 3 ); 该方法生成的串s为“cde”。(注意数组的下标从0开始)3

11、、字符串、字符串String:创建:创建String( byte mybyte, byte hibyte ):因为在Internet上,格式采用八位的ASCII码,所以Java的类String提供了从byte型数组进行初始化的构造方法。其中hibyte指明各字符的高位字节,对于通常所用的ASCII码,必须将高位字节声明为零,而其他的非拉丁文字符则置为非零。byte mybyte = 97 , 98 , 99 ; String s = new String( mybyte , 0 );该方法构造的字符串s是“abc”。3、字符串、字符串String:创建:创建String( byte mybyt

12、e, byte hibyte , int startIndex , int numChars ): 这种构造方法与String(char ,int startIndex,int numChars)类似,只是初始化的数组类型不同。byte mybyte = 80 , 81, 82, 83, 84, 85 ;String s = new String ( mybyte , 0, 2, 3 ); 该方法构造的字符串s是“RST”。String(StringBuffer buffer):这个构造函数利用一个已经存在的StringBuffer对象为新建的String对象初始化。3、字符串、字符串Stri

13、ng:创建:创建 1. length public int length( ) 此方法返回字符串的字符个数,如:String s = abc; System.out.println( s.length( ) ); 则将显示字符个数为3。3、字符串、字符串String:基本方法:基本方法2. charAt public char charAt (int index )该方法返回字符串中index位置上的字符,其中index值的范围是0length-1。3. getChars如果要从字符串中提取一个以上的字符,则可以用此方法:public void getchars (int srcbegin,i

14、nt end,char buf,int dstbegin)其中,srcbegin为要提取的第一个字符在源串中的位置,end为要提取的最后一个字符在源串中的位置,字符数组bufbuf存放目的字符串,dstbegin为提取的字符串在目的串中的起始位置。3、字符串、字符串String:基本方法:基本方法4. getbytespublic void getbytes (int srcbegin,int end,byte bytbyt,int dstbegin )类似于上一个方法,只是串中的字符均用8位表示,参数及用法同上。5. indexOf和lastIndexOf为了在给定的字符串中检索特定的字符或

15、子串,类String提供了上面两种方法,并通过方法重写更方便的处理这类问题。这两种方法中,如果查找成功,则返回匹配成功的字符的位置,如果没有查找到,则都返回 -1。 int indexOf ( int ch) int lastIndexOf ( int ch) 返回字符ch在字符串中出现的第一个和最后一个位置。3、字符串、字符串String:基本方法:基本方法int indexOf(String str)int lastindexOf(String str)返回子串str中第一个字符在字符串中出现的始末位置。int indexOf ( int ch, int fromIndex) int la

16、stIndexOf ( int ch, int fromIndex)返回字符ch在字符串中位置fromIndex以后出现的始末位置。int indexOf (String str,int fromIndex) int lastIndexOf (String str , int fromIndex)返回子串str中的第一个字符在字符串中位置fromIndex以后出现的始末位置。3、字符串、字符串String:基本方法:基本方法6. 在Java中,运算符“”可以用来实现字符串的连接,如:String s = “He is” + age + “years old.”假设整数型变量age的值为15,那

17、么,s的值为“He is 15 yearsOld”。7. compareTopublic int compareTo ( String str ) 该方法按字典次序比较两个字符串的大小,如果源串较小,则返回一个小于0的值,如相等则返回0,否则返回一个大于0的值。3、字符串、字符串String:基本方法:基本方法8. regionMatchesboolean regionMatches( int toffset , String other , int ooffset , int len ) boolean regionMatches( boolean ignoreCase , int toff

18、set , String other , int ooffset , int len )上述两个方法都是用来进行模式匹配模式匹配的,匹配成功则返回true,否则返回false。其中,toffset和ooffset分别指明当前字符串和参数字符串中所要比较的子串的起始索引位置,len指明比较的长度,而ignoreCase指明比较时是否区分大小写。对于第一种方法,比较是区分大小写的。String s1= “tsinghua” String s2=“it is TsingHua”; s1.regionMatches(0,s2,6,7); 3、字符串、字符串String:基本方法:基本方法 9. equ

19、als和equalsIgnoreCasepublic boolean equals( object str) public boolean equalsIgnoreCase( object str )判断两个字符串是否相等,则可以用此方法。相等则返回 true,不等则返回false,两种方法的区别在于 equalsIgnoreCase不区分字母大小写,而equals则须区分。10.其他方法public String concat(String str);将当前字符串对象与给定的字符串str连接起来。3、字符串、字符串String:基本方法:基本方法public String replace(c

20、har oldChar,char newChar)将串中出现的特定字符用新的字符代替。public String substring(int beginIndex)public String substring(int beginIndex,int endIndex)用来得到字符串中指定范围内的子串。public String toLowerCase()把串中的所有字符转换成小写public String toUpperCase()把串中的所有字符转换成大写3、字符串、字符串String:基本方法:基本方法示例1:加密解密算法npublic class Stringdemo n public

21、String jiami(String str) n String result = ;n int length = str.length();n char c = new charlength;n for (int i = 0; i str.length(); i+) n ci = (char) (str.charAt(i) + i);n n return new String(c);n 示例,密码加密n public String jiemi(String str) n String result = ;n int length = str.length();n char c = new

22、charlength;n for (int i = 0; i str.length(); i+) n ci = (char) (str.charAt(i) - i);n n return new String(c);n 示例,密码加密npublic static void main(String args) n Stringdemo s = new Stringdemo();n String str = 1234567890abcdefghijklmnopqrstuvwxyz;n System.out.println(加密前 + str);n String afterjiami = s.jia

23、mi(1234567890abcdefghijklmnopqrstuvwxyz);n System.out.println(加密后 + afterjiami);n String afterjiemi = s.jiemi(afterjiami);n System.out.println(解密后 + afterjiemi);n n示例2:字符串分割npublic class Split_test npublic static void main(String args)nString str = 2010-06-01-19-56;nString str_split = str.split(“-”)

24、;n /以“-”为标志将字符串拆分n /循环打印字符数组元素nfor(int i=0;ijava demoOfStringBuffer buffer=abclength=3capacity=192. append public synchronized StringBuffer append(对象类型 对象名) append方法将指定的参数对象转化成字符串,附加在原来的字符串对象之后。3. insert public synchronized StringBuffer insert(int 插入位置,对象类型 对象名) 在指定的位置插入给出的参数对象所转化而得的字符串。3、字符串、字符串Str

25、ingBuffer:基本方法:基本方法4. setChatAt() public synchronized void setCharAt(int index,char ch) 用来设置指定索引index位置的字符值。5. setLength public synchronized void setLength(int newLength) 如果希望明确地定义字符缓冲区的长度,则可以用此方法。如果newlength大于现在的长度,串尾将补0,如果小于,那么newlength后的字符将丢失。3、字符串、字符串StringBuffer:基本方法:基本方法用StringBuffer修改加密解密n加密算

26、法npublic String jiami(String str) n StringBuffer result=new StringBuffer();n for (int i = 0; i str.length(); i+) n /得到字符直接追加到result n result.append(char) (str.charAt(i) + i);n n return result.toString();n 与日期和时间有关的类nJava 语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分。n日期是商业逻辑计算一个关

27、键的部分。所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象。 与日期和时间有关的类n创建一个日期对象创建一个日期对象 让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数。这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间。 与日期和时间有关的类nDate date = new Date(); 我们使用了Date 构造函数创建一个日期对象,这个构造函数没有接受任何参数,而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期。 与日期和时间有关的类n日期数据的定制格式日期数据的定制格式

28、Date类njava.text.DateFormat与java.text.SimpleDateFormat子类nSimpleDateFormat是DateFormat的子类,DateFormat是抽象类。与日期和时间有关的类nSimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。nSimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。nSimpleDateFormat类常用成员方法如下:nString format(Date date):将

29、一个 Date 格式化为日期/时间字符串。nDate parse(String source):从给定字符串的开始分析文本,以生成一个日期。与日期和时间有关的类nString writerDate = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date(); nSimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日 EEE HH:mm:ss);n格式“yyyy年MM月dd日EEE HH:mm:ss” 其中EEE表示“星期”与日期和时间有关的类nSimpleDateFormat

30、类的作用是设置好某种格式:SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);将字符串转换为日期:Date dt = sdf.parse(2007-04-30);将日期转换为字符串:String str=sdf.format(dt); 实例npublic class DateTest npublic static void main(String args)nDate date = new Date();/根据当前系统事件生成Date对象nSimpleDateFormat sdf = new SimpleDateFormat(yyyy

31、年MM月dd日 EEE HH:mm:ss);nString date_str = date.toString();nString date_format = sdf.format(date);/根据规定的格式格式化Date对象nSystem.out.println(date_str);nSystem.out.println(date_format);n n与日期和时间有关的类nCalendar日历类是一个抽象类,主要用于日期字段之间相互操作,设置和获取日期数据的特定部分。Calendar类的set()和get()方法可以用来设置和读取日期的特定部分,比如年、月、日、分和秒等。n我们可以使用Ca

32、lendar.getInstance()方法获取Calendar类实例或调用它的子类GregorianCalendar的构造方法。GregorianCalendar采用格林尼治标准时间。与日期和时间有关的类nGregorianCalendar类常用构造方法如下:n(1)GregorianCalendar():在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。n(2)GregorianCalendar(int year, int month, int dayOfMonth):在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianC

33、alendar。n(3)GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute):为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。n(4)GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second):为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。与日期和时间有关的类

34、n GregorianCalendar类常用方法如下:n(1)void add(int field, int amount):根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。field指对哪个日期域进行操作,如DATE。n(2)Date getTime(): 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。n(3)void set(int field, int value):将给定的日历字段设为给定值。n(4)void gett(int field, int value):返回给定的日历字段值。n(5)void setTime(Date

35、date):使用给定的 Date 设置此 Calendar 的时间。n(6)long getTimeInMillis(): 返回此 Calendar 的时间值,以毫秒为单位。实例;nimport java.util.Calendar;nimport java.util.GregorianCalendar;nimport java.text.SimpleDateFormat;nimport java.util.Date;npublic class Calendardemo n public static void main(String args) n Calendar cal = new Gr

36、egorianCalendar();n System.out.println(当前格林尼治时间-+cal.getTime();n System.out.print( 年: + cal.get(Calendar.YEAR);n System.out.print( 月: + cal.get(Calendar.MONTH);n System.out.print( 日: + cal.get(Calendar.DATE);n /Calendar类中星期日Calendar.SUNDAT是1n System.out.print( 星期: + (cal.get(Calendar.DAY_OF_WEEK);n

37、System.out.print( 小时: + cal.get(Calendar.HOUR_OF_DAY);n System.out.print( 分: + cal.get(Calendar.MINUTE);n System.out.println( 秒: + cal.get(Calendar.SECOND);n Date date = cal.getTime();n SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日EEE HH:mm:ss);n String date_format = sdf.format(date);n Sys

38、tem.out.println(今天是: + date_format);n cal.set(Calendar.DATE, 1);n cal.add(Calendar.HOUR, 4);n System.out.println(修改后的时间为: + cal.getTime();n System.out.println(修改后的时间为: + sdf.format(cal.getTime();n n包装类n对于java中的基本数据类型如long,int等等都有一个对应的数据类型类,将它们包装成一个对象,并提供一些操作它们的方法.基本数据类型longintshortbytefloatdoublecha

39、rboolen数据类型类LongIntegerShortByteFloatDoubleCharacterBoolen包装类n构造方法和常用方法(以Double为例)n1、Double dou1=new Double(“123.45”)nDouble dou2=new Double(123.45)n2、public double doubleValue()n字符串转换成相应的基本类型数据值npublic static double parseDouble(String)n从包装类对象中取出对应的基本类型数据值npublic double doubleValue();npublic static

40、Double valueOf(String)npublic String toString()包装类实例n数字字符串转换成对应简单数据类型;n从数据类型对象中取出对应的简单类型数据; nJDK1.5及以后版本运行基本类型和包装类型进行混合运算。在JDK1.5版本之前,数学运算表达式中操作单元必须是基本类型,并且结果也必须是基本类型。例如以下语句:ndouble d = 123.456*3*3;/合法nDouble d = new Double(“123.456”)*new Integer(3)*3;/不合法,编译出错n在JDK1.5及以后版本中上面两个语句均合法。实例npublic class

41、 CalculateTest n public static void main(String args)nDouble d = Double.valueOf(123.456);nInteger i = new Integer(3);nDouble d2 = Double.valueOf(3.3);nint ii = 6;nSystem.out.println(d*i*d2-ii);n n集合类框架nArrayListnVectornIteratornHashTablenHashMap为什么需要集合框架学生1学生20n如何存储每天的新闻信息?n如何存储课程的代码与课程信息,能够通过代码方便地获

42、得课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象方式存储对象那么,可以使用那么,可以使用Java集合框架,来解决这类问题集合框架,来解决这类问题一维数组一维数组代码1代码N课程1课程N一一对应一一对应新闻1新闻N每天的新闻总数不每天的新闻总数不确定,显然无法再确定,显然无法再使用数组保存使用数组保存n存储一个班的学生信息,假定一个班容纳20名学员Java集合框架包含的内容1接口接口CollectionListMap2具体类具体类ListArrayListVectorMap3算法算法Java集

43、合框架,为我们提供了一套性能优良、使用方便的接口和类,我集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了出现的问题了 Java集合框架位于集合框架位于java.util包中包中 Collections提供了对集合进提供了对集合进行排序、遍历等行排序、遍历等多种算法实现多种算法实现采用键采用键-值对的存储方式,值对的存储方式,长度可动态改变长度可动态改变采用线性列表的存储方式,采用线性列表的存储方式,长度可动态改变长度可动态改变SetList采用线

44、性列表的存储方式,采用线性列表的存储方式,长度可动态改变长度可动态改变List了解内了解内容容HashtableHashMapList接口和ArrayList类n开发一套小型的新闻管理系统,要求如下:n可以存储各类新闻标题(包含ID、名称、创建者、创建时间)n可以获取新闻标题的总数n可以逐条打印每条新闻标题的名称存储方式如何选择?存储方式如何选择?元素个数不确定元素个数不确定 使用集合类使用集合类 需要遍历元素需要遍历元素 存储对象如何确定?存储对象如何确定?类型:新闻标题类型:新闻标题 属性:属性:ID、名称、创建者、创建时间、名称、创建者、创建时间 List接口和ArrayList类 n第

45、一步,确定存储方式 1、ArrayList类是List接口的一个具体实现类2、ArrayList 对象实现了可变大小的数组3、随机访问和遍历元素时,它提供更好的性能元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10当元素个数增当元素个数增加为加为11个个元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10元素11创建了一个新的数组,把创建了一个新的数组,把原数组中元素复制进来原数组中元素复制进来 根据下标位置访问元素根据下标位置访问元素List接口和ArrayList类n第二步:确定存储对象1、创建类型:新闻标题2、包含属性: ID、名称、创建者、创建时间public c

46、lass FirstLevelTitle private int id; /IDprivate String titleName; /名称名称private String creater; /创建者创建者private Date createTime; /创建时间创建时间public FirstLevelTitle(int id, String titleName, String creater,Date createTime) this.id = id;this.titleName = titleName;this.creater = creater;this.createTime = cr

47、eateTime;public String getTitleName() return titleName;public void setTitleName(String titleName) this.titleName = titleName;List接口和ArrayList类 5-4n第三步:具体实现1、按照顺序依次添加各类新闻标题2、获取新闻标题的总数3、根据位置获取相应新闻标题4、逐条打印每条新闻标题的名称public class FirstLevelTitleDB1 public static void main(String args) FirstLevelTitle car

48、= new FirstLevelTitle(1, 汽车汽车, 管理员管理员, new Date();FirstLevelTitle test = new FirstLevelTitle(2, 高考高考, 管理员管理员, new Date();List newsTitleList = new ArrayList();newsTitleList.add(car);newsTitleList.add(test);System.out.println(新闻标题数目为:新闻标题数目为: + newsTitleList.size() + 条条);print(newsTitleList);public st

49、atic void print(List newsList) for (int i = 0; i newsList.size(); i+) FirstLevelTitle title = (FirstLevelTitle) newsList.get(i);System.out.println(i + 1 + : + title.getTitleName();123顺序添加,位置从顺序添加,位置从0开始开始新闻标题数目为:新闻标题数目为:2条条1:汽车汽车2:高考高考控制台输出控制台输出4从集合中取出后为从集合中取出后为Object类型,需类型,需要进行强制类型转换要进行强制类型转换List接口

50、和ArrayList类n第三步:具体实现1、在指定的位置添加新闻标题2、判断是否已经存储了某条新闻标题3、删除指定位置处的某一新闻标题public class FirstLevelTitleDB2 public static void main(String args) FirstLevelTitle car = new FirstLevelTitle(1, 汽车汽车, 网站管理员网站管理员, new Date();FirstLevelTitle test = new FirstLevelTitle(2, 高考高考, 网站管理员网站管理员, new Date();FirstLevelTitle

51、 house = new FirstLevelTitle(3, 房产房产, 网站管理员网站管理员, new Date();List newsTitleList = new ArrayList();newsTitleList.add(car);newsTitleList.add(test);newsTitleList.add(2,house);if(newsTitleList.contains(test)System.out.println(有高考的新闻有高考的新闻);elseSystem.out.println(没有高考的新闻没有高考的新闻);newsTitleList.remove(1);S

52、ystem.out.println(新闻标题数目为:新闻标题数目为: + newsTitleList.size() + 条条); 123在指定的位置添加元素在指定的位置添加元素,后续元素依次后移后续元素依次后移 有高考的新闻有高考的新闻新闻标题数目为:新闻标题数目为:2条条控制台输控制台输出出List接口中定义的常用方法n,boolean add(Object o);n,int size();n,Object get(int index);n,void add(int index,Object o);插入n,boolean contains(Object o);n,boolean remove

53、(Object o);小结1n创建一个类Cat n包含属性name,在构造方法中进行初始化 n添加一个方法show(),用以打印name属性的值 n创建一个类CatTest,添加main方法,实现 n创建一个ArrayList,向其中添加几个Cat对象 n遍历该集合,并且对每个Cat对象调用show()方法 Collection接口中别的集合Collection接口中Iteratorn如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用

54、法如下: Iterator it = collection.iterator(); / 获得一个迭代子 while(it.hasNext() / 得到下一个元素, 需要做具体的类型转换 n Object obj = it.next(); Collection接口中Iteratornpublic void outputinfo(List list)nIterator it=list.iterator();nwhile(it.hasNext()n FirstLevelTitle ft=(FirstLevelTitle )it.next();nft.getTitleName();nn那Vector和

55、ArrayList有何区别呢?nVector非常类似ArrayList,但是Vector是同步的 .n大家不必过多的去研究它们的区别n用Vector代替ArrayList实现前例Map接口和HashMap类n学生应聘至外企工作,每个学生都会有一个英文名称,对应该学员对象 Jack淮安信息毕业的李明淮安信息毕业的李明Rose南京信息毕业的刘丽南京信息毕业的刘丽n现在希望通过英文名称,获得该学员对象的详细信息,如何实现?存储方式如何选择?存储方式如何选择?元素个数不确定元素个数不确定使用集合类使用集合类通过通过key(英文名称)获得英文名称)获得value(学员对象)(学员对象)存储对象如何确定?

56、存储对象如何确定?类型:学生类型:学生属性:学校、姓名属性:学校、姓名Map接口和HashMap类 4-2n第一步,确定存储方式 1、Map接口用于维护“键-值对”的关联性,可以通过键查找值2、HashMap是Map接口的一个具体实现类 Map接口和HashMap类n第二步:确定存储对象1、创建类型:Accp学员2、包含属性:中心名称、姓名public class AccpStudent private String name; / 学生姓名学生姓名private String school; / 学校名称学校名称public AccpStudent(String name, String s

57、chool) = name;this.school = school;public String toString() return school+毕业的毕业的+name;重写重写Object的的toString()方法,用于输出调试和描方法,用于输出调试和描述信息述信息Map接口和HashMap类n第三步:具体实现1、把英文名称与学员对象按照“键-值对”的方式存储在HashMap中2、分别打印键集、值集、以及键-值对集合3、判断是否存在某个键,如果是,则根据键获取相应的值4、根据键、删除某条记录public class MapTest public static void

58、 main(String args) AccpStudent student1 = new AccpStudent(“李明李明”, “淮安信息淮安信息); AccpStudent student2 = new AccpStudent(“刘丽刘丽”, “南京信息南京信息); Map students = new HashMap(); students.put(Jack, student1); students.put(Rose, student2); System.out.println(键集:键集:+students.keySet(); System.out.println(值集值集:+stu

59、dents.values(); System.out.println(键键-值对集合值对集合:+students); String key = Jack; if(students.containsKey(key) System.out.println(students.get(key); students.remove(key); System.out.println(键键-值对集合值对集合:+students); 123键集:键集:Jack, Rose值集值集: 淮安信息毕业的李明淮安信息毕业的李明, 南京信息毕业的刘丽南京信息毕业的刘丽键键-值对集合值对集合:Jack=淮安信淮安信息毕业的李明息毕业的李明, Rose=南京南京信息毕业的刘丽信息毕业的刘丽淮安信息毕业的李明淮安信息毕业的李明键键-值对集合值对集合:Rose=南京南京信息毕业的刘丽信息毕业的刘丽控制台输出控制台输出4HashMap的常用方法n,Object put(Obje

温馨提示

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

评论

0/150

提交评论