??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久网站,成人国产免费视频,国产亚洲成人一区http://www.aygfsteel.com/yesjoy/category/23522.html<font color="red">?lt;/font><font color="blue">d爬山 所以艰?dL 所以苦?lt;/font><font color="red">?lt;/font>zh-cnWed, 01 Sep 2010 08:54:44 GMTWed, 01 Sep 2010 08:54:44 GMT60Comparator用法ȝhttp://www.aygfsteel.com/yesjoy/articles/126046.html★yesjoy?/dc:creator>★yesjoy?/author>Mon, 25 Jun 2007 02:56:00 GMThttp://www.aygfsteel.com/yesjoy/articles/126046.htmlhttp://www.aygfsteel.com/yesjoy/comments/126046.htmlhttp://www.aygfsteel.com/yesjoy/articles/126046.html#Feedback0http://www.aygfsteel.com/yesjoy/comments/commentRss/126046.htmlhttp://www.aygfsteel.com/yesjoy/services/trackbacks/126046.html比较函数
TreeSet和TreeMap都按排序序存储元素。然而,_定义采用何种“排序序”的是比较函数。通常在默认的情况下,q些c通过使用被JavaUC?#8220;自然序”的顺序存储它们的元素Q而这U顺序通常也是你所需要的QA在B的前面,1?的前面,{等Q。如果需要用不同的方法对元素q行排序Q可以在构造集合或映射Ӟ指定一个Comparator对象。这样做Z提供了一U精控制如何将元素储存到排序类集和映射中的能力?br>  
  Comparator接口定义了两个方法:compareQ?Q和equalsQ?Q。这里给出的compareQ?Q方法按序比较了两个元素:
  
  int compare(Object obj1, Object obj2)
  
  obj1和obj2是被比较的两个对象。当两个对象相等Ӟ该方法返?Q当obj1大于obj2Ӟq回一个正|否则Q返回一个负倹{如果用于比较的对象的类型不兼容的话Q该Ҏ引发一个ClassCastException异常。通过覆盖compareQ?Q,可以改变对象排序的方式。例如,通过创徏一个颠倒比较输出的比较函数Q可以实现按逆向排序?br>  
  q里l出的equals( )ҎQ测试一个对象是否与调用比较函数相等Q?br>  
  boolean equals(Object obj)
  
  obj是被用来q行相等试的对象。如果obj和调用对象都是Comparator的对象ƈ且用相同的排序。该Ҏq回true.否则q回false.重蝲equalsQ?Q方法是没有必要的,大多数简单的比较函数都不q样做?br>  
  1 使用比较函数
  
  下面是一个说明定制的比较函数能力的例子。该例子实现compareQ?Q方法以便它按正帔R序的逆向q行操作。因此,它得一个树集合按逆向的顺序进行存储?br>
// Use a custom comparator.
import java.util.Comparator;
//A reverse comparator for strings.
public class MyComp implements Comparator {
    
public int compare(Object a, Object b) {
        String aStr, bStr;
        aStr 
= (String) a;
        bStr 
= (String) b;
        
// reverse the comparison
        return bStr.compareTo(aStr);
    }

    
// no need to override equals
}

import java.util.Iterator;
import java.util.TreeSet;

public class CompDemo {
    
public static void main(String[] args) {
        
// Create a tree set
        TreeSet ts = new TreeSet(new MyComp());
        
// Add elements to the tree set
        ts.add("C");
        ts.add(
"A");
        ts.add(
"B");
        ts.add(
"E");
        ts.add(
"F");
        ts.add(
"D");
        
// Get an iterator
        Iterator i = ts.iterator();
        
// Display elements
        while (i.hasNext()) {
            Object element 
= i.next();
            System.out.print(element 
+ " ");
        }

        System.out.println();
    }

}


正如下面的输出所C,树按照逆向序q行存储Q?br>  
  F E D C B A
  
  仔细观察实现Comparatorq覆盖compareQ?Q方法的MyCompc(正如前面所解释的那P覆盖equalsQ?Q方法既不是必须的,也不是常用的Q。在compareQ?Q方法内部,StringҎcompareToQ?Q比较两个字W串。然而由bStrQ?不是aStrQ?调用compareToQ?Q方法,q导致比较的l果被逆向?br>  
  对应一个更实际的例子,下面的例子是用TreeMapE序实现前面介绍的存储̎目资产^衡表例子的程序。在前面介绍的程序中Q̎目是按名q行排序的,但程序是以按照名字进行排序开始的。下面的E序按姓对̎目进行排序。ؓ了实现这U功能,E序使用了比较函数来比较每一个̎目下姓的排序。得到的映射是按姓进行排序的?br>
//Use a comparator to sort accounts by last name.
import java.util.Comparator;

//Compare last whole words in two strings.
public class TComp implements Comparator {

    
public int compare(Object a, Object b) {
        
int i, j, k;
        String aStr, bStr;
        aStr 
= (String) a;
        bStr 
= (String) b;
        
// find index of beginning of last name
        i = aStr.lastIndexOf(' ');
        j 
= bStr.lastIndexOf(' ');
        k 
= aStr.substring(i).compareTo(bStr.substring(j));
        
if (k == 0// last names match, check entire name
            return aStr.compareTo(bStr);
        
else
            
return k;
    }

    
// no need to override equals
}

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo2 {
    
public static void main(String[] args) {
        
// Create a tree map
        TreeMap tm = new TreeMap(new TComp());
        
// Put elements to the map
        tm.put("John Doe"new Double(3434.34));
        tm.put(
"Tom Smith"new Double(123.22));
        tm.put(
"Jane Baker"new Double(1378.00));
        tm.put(
"Todd Hall"new Double(99.22));
        tm.put(
"Ralph Smith"new Double(-19.08));
        
// Get a set of the entries
        Set set = tm.entrySet();
        
// Get an iterator
        Iterator itr = set.iterator();
        
// Display elements
        while (itr.hasNext()) {
            Map.Entry me 
= (Map.Entry) itr.next();
            System.out.print(me.getKey() 
+ "");
            System.out.println(me.getValue());
        }

        System.out.println();
        
// Deposit 1000 into John Doe's account
        double balance = ((Double) tm.get("John Doe")).doubleValue();
        tm.put(
"John Doe"new Double(balance + 1000));
        System.out.println(
"John Doe's new balance: " + tm.get("John Doe"));
    }

}


  q里是程序的输出l果Q注意此时的账目是按姓进行排序的Q?br>  
  Jane Baker: 1378.0
  
  John Doe: 3434.34
  
  Todd Hall: 99.22
  
  Ralph Smith: -19.08
  
  Tom Smith: 123.22
  
  John Doe’s new balance: 4434.34
  
  比较函数cTComp比较两个包含姓和名的字符丌Ӏ它首先比较姓。具体是q样做的Q它首先L每一个字W串中最后一个空格的下标Q然后比较从q个位置开始的每一个元素的子字W串。当两个字符串中姓完全相{时Q它再比较两个名。这样就形成了一个先按姓q行排序Q在姓相同的情况下,再按名字q行排序的树型映。通过E序的输ZRalphSmith出现在Tom Smith之前的结果可以看到这一炏V?/font>
参照Q?a >http://www.linuxmine.com/43849.html

]]>
java.util?/title><link>http://www.aygfsteel.com/yesjoy/articles/126042.html</link><dc:creator>★yesjoy?/dc:creator><author>★yesjoy?/author><pubDate>Mon, 25 Jun 2007 02:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/yesjoy/articles/126042.html</guid><wfw:comment>http://www.aygfsteel.com/yesjoy/comments/126042.html</wfw:comment><comments>http://www.aygfsteel.com/yesjoy/articles/126042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yesjoy/comments/commentRss/126042.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yesjoy/services/trackbacks/126042.html</trackback:ping><description><![CDATA[转脓来自Q?a s date is:Web Mar 02 10:13:34 GMT+08:00 1910<br>  下面我们l出一些DatecM常用Ҏ?br>  (1)public static long UTC(int year,int month,int date,int hrs. int min,int sec)<br>  该方法将利用l定参数计算UTC倹{UTC是一U计时体Ӟ与GMT(<a target=_blank><font color=#000000><u>格林威治</u></font></a>旉)的计时体pȝ有差别。UTC计时体系是基于原子时钟的Q而GTMT计时体系是基于天文学观测的。计中使用的一般ؓGMT计时体系?br>  (2)public static long parse(String s)<br>  该方法将字符串s转换成一个long型的日期。在介绍构造方法Date(long date)时曾使用q这个方法?br>  字符串s有一定的格式Q一般ؓQ?br>  (星期 ?nbsp;q?nbsp;旉GMT+时区)<br>  若不注明时区Q则为本地时区?br>  (3)public void setMonth(int month)<br>  (4)public int getMonth()<br>  q两个方法分别ؓ讑֮和获取月份倹{?br>  获取的月份的值域??1Q?代表1月,11代表12月?br>  (5)public String toString()<br>  (6)public String toLocalString()<br>  (7)public String toGMTString()<br>  给定日期对象{换成不同格式的字W串。它们对应的具体的格式可参看例子8.1?br>  (8)public int getTimezoneOffset()<br>  该方法用于获取日期对象的时区偏移量?br>  ?.1中对上面介绍的DatecM的基本方法进行了具体的应用,q打C相应的结果。由于用了一些过时的ҎQ所以编译时会有警告信息。另外,׃本例中的旉表示与^台有养I不同的JDK版本Ҏ处理不完全相同,因此不同版本的JDK执行本例的结果可能有l微差异?br>  ?.1 DateApp.java<br>  import java.lang.System;<br>  import java.util.Date;<br>  public class DateApp{<br>   public static void main(String args[]){<br>    Date today=new Date();<br>    //today中的日期被设成创建时ȝ日期和时_假设创徏时刻?997q??br>    //23?7?1?4U?br>    System.out.println("Today's date is "+today);<br>    //q回一般的旉表示法,本例中结果ؓ<br>    //Today's date is Fri May 23 17:51:54 1997<br>    System.out.println("Today's date(Internet GMT)is:"<br>     +today.toGMTString());<br>    //q回l果为GMT旉表示法,本例中结果ؓ<br>    //Today's date(Internet GMT)is: 23 May 1997 09:51:54:GMT<br>    System.out.println("Today's date(Locale) is:"<br>     +today.toLocaleString());<br>    //q回l果为本C惯的旉表示法,l果?br>    //Today's date(Locale)is:05/23/97 17:51:54<br>    System.out.println("Today's year is: "+today.getYear());<br>    System.out.println("Today's month is: "+(today.getMonth()+1));<br>    System.out.println("Today's date is: "+today.getDate());<br>    //调用DatecMҎQ获取年月日的倹{?br>    //下面调用了不同的构造方法来创徏Datecȝ对象?br>    Date day1=new Date(100,1,23,10,12,34);<br>    System.out.println("Day1's date is: "+day1);<br>    Date day2=new Date("Sat 12 Aug 1996 13:3:00");<br>    System.out.println("Day2's date is: "+day2);<br>    long l= Date.parse("Sat 5 Aug 1996 13:3:00 GMT+0800");<br>    Date day3= new Date(l);<br>    System.out.println("Day3's date(GMT)is: "+day3.toGMTString());<br>    System.out.println("Day3's date(Locale)is: "<br>     +day3.toLocaleString());<br>    System.out.println("Day3's time zone offset is:"<br>     +day3.getTimezoneOffset());<br>   }<br>  }<br><br>  q行l果(JDK1.3版,与原文不同,原文是JDK1.0?Q?br>  E:\java\tutorial\java01>java DateApp<br>  Today's date is Thu Dec 27 17:58:16 CST 2001<br>  Today's date(Internet GMT)is:27 Dec 2001 09:58:16 GMT<br>  Today's date(Locale) is:2001-12-27 17:58:16<br>  Today's year is: 101<br>  Today's month is: 12<br>  Today's date is: 27<br>  Day1's date is: Wed Feb 23 10:12:34 CST 2000<br>  Day2's date is: Fri Aug 12 13:03:00 CST 1996<br>  Day3's date(GMT)is: 5 Aug 1996 05:03:00 GMT<br>  Day3's date(Locale)is: 1996-8-5 13:03:00<br>  Day3's time zone offset is:-480<br><br>  E:\java\tutorial\java01><br><br>1.3 日历cCalendar<br><br>  在早期的JDK版本中,日期(Date)c附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表C日期的字符串进行格式化和句法分析。在JDK1.1中提供了cCalendar来完成第一U功能,cDateFormat来完成第二项功能。dateFormat是java.text包中的一个类。与DatecL所不同的是QDateFormatcL受用各种语言和不同习惯表C的日期字符丌Ӏ本节将介绍java.util包中的类Calendar及其它新增加的相关的cR?br>  cCalendar是一个抽象类Q它完成日期(Date)cd普通日期表C法(即用一l整型域如YEARQMONTHQDAYQHOUR表示日期)之间的{换?br>  ׃所使用的规则不同,不同的日历系l对同一个日期的解释有所不同。在JDK1.1中提供了CalendarcM个子cGregorianCalendar??它实C世界上普遍用的公历pȝ。当然用户也可以通过l承Calendarc,q增加所需规则Q以实现不同的日历系l?br>  WGregorianCalendarl承了CalendarcR本节将在介l类GregorianCalendar的同旉带介lCalendarcM的相x法?br>  cGregorianCalendar提供了七U构造函敎ͼ<br>  (1)public GregorianCalendar()<br>  创徏的对象中的相兛_D讄成指定时区,~省地点的当前时_即程序运行时所处的时区、地点的当前旉?br>  (2)public GregorianCalendar(TimeZone zone)<br>  创徏的对象中的相兛_D讄成指定时区zoneQ缺省地点的当前旉?br>  (3)public GregorianCalendar(Locale aLocale)<br>  创徏的对象中的相兛_D讄成缺省时区,指定地点aLocale的当前时间?br>  (4)public GregorianCalendar(TimeZone zone,Local aLocale)<br>  创徏的对象中的相兛_D讄成指定时区,指定地点的当前时间?br>  上面使用到的cTimeZone的性质如下Q?br>  TimeZone是java.util包中的一个类Q其中封装了有关时区的信息。每一个时区对应一lID。类TimeZone提供了一些方法完成时Z对应ID两者之间的转换?br>  (?已知某个特定的IDQ可以调用方?br>  public static synchronized TimeZone getTimeZone(String ID)<br>来获取对应的时区对象?br>  ?nbsp;太^z时区的ID为PSTQ用下面的方法可获取对应于太qx时区的时区对象:<br>  TimeZone tz=TimeZone.getTimeZone("PST");<br>  调用ҎgetDefault()可以获取L所处时区的对象?br>  TimeZone tz=TimeZone.getDefault();<br>  (?调用以下Ҏ可以获取时区的ID<br>  ■public static synchronized String[] getavailableIDs(int rawOffset)<br>  Ҏl定时区偏移D取ID数组。同一时区的不同地区的ID可能不同Q这是由于不同地区对是否实施夏时制意见不l一而造成的?br>  例String s[]=TimeZone.getAvailableIDs(-7*60*60*1000);<br>  打印sQ结果ؓs[0]=PNTQs[1]=MST<br>  ■public static synchronized String[] getAvailableIDs()<br>  获取提供的所有支持的ID?br>  ■public String getID()<br>  获取特定时区对象的ID?br>  ?nbsp;TimeZone tz=TimeZone.getDefault();<br>  String s=tz.getID();<br>  打印sQ结果ؓs=CTT?br>  上面使用cȝ对象代表了一个特定的地理、政L文化区域。Locale只是一U机Ӟ它用来标识一cd象,Local本nq不包含此类对象?br>  要获取一个Locale的对象有两种ҎQ?br>  (?调用Localecȝ构造方?br>  Locale(String language,String country)<br>  Locale(String language,String country,String variant)<br>  参数说明Qlanguage??在ISO-639中定义的代码Q由两个写字母l成?br>       country??在ISO-3166中定义的代码Q由两个大写字母l成?br>       variant??售货商以及特定浏览器的代码,例如使用WIN代表Windows?br>  (?调用LocalecM定义的常?br>  LocalcL供了大量的常量供用户创徏Locale对象?br>  ?nbsp;Locale.CHINA<br>    Z国创Z个Locale的对象?br>  cTimeZone和类Locale中的其它ҎQ读者可查阅API?br>  (5)public GregorianCalendar(int year,int month,int date)<br>  (6)public GregorianCalendar(int year,int month,int date,int hour,int minute)<br>  (7)public GregorianCalendar(int year,int month,int date,int hour,int minute,int second)<br>  用给定的日期和时间创Z个GregorianCalendar的对象?br>  参数说明Q?br>  year-讑֮日历对象的变量YEARQmonth-讑֮日历对象的变量MONTHQ?br>  date-讑֮日历对象的变量DATEQhour-讑֮日历对象的变量HOUR_OF_DAYQ?br>  minute-讑֮日历对象的变量MINUTEQsecond-讑֮日历对象的变量SECOND?br>  与DatecM不同的是year的值没?900q个下限Q而且year的g表实际的q䆾。month的含义与Datecȝ同,0代表1月,11代表12月?br>  ?nbsp;GregorianCalendar cal=new GregorianCalendar(1991,2,4)<br>  cal的日期ؓ1991q??受?br>  除了与Date中类似的Ҏ外,Calendarc还提供了有x法对日历q行滚动计算和数学计。计规则由l定的日历系l决定。进行日期计时Q有时会遇到信息不或信息不实等Ҏ情况。Calendar采取了相应的Ҏ解决q些问题。当信息不时将采用~省讄Q在GregorianCalendarcM~省讄一般ؓYEAR=1970,MONTH=JANUARY,DATE=1?br>  当信息不实时QCalendar按下面的次序优先选择相应的Calendar的变量组合,q将其它有冲H的信息丢弃?br>  MONTH+DAY_OF_MONTH<br>  MONTH+WEEK_OF_MONTH+DAY_OF_WEEK<br>  MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK<br>  DAY_OF+YEAR<br>  DAY_OF_WEEK_WEEK_OF_YEAR<br>  HOUR_OF_DAY<br><br>1.4 随机数类Random<br><br>  Java实用工具cd中的cjava.util.Random提供了生各U类型随机数的方法。它可以产生int、long、float、double以及Goussian{类型的随机数。这也是它与java.lang.Math中的ҎRandom()最大的不同之处Q后者只产生double型的随机数?br>  cRandom中的Ҏ十分单,它只有两个构造方法和六个普通方法?br>  构造方法:<br>  (1)public Random()<br>  (2)public Random(long seed)<br>  Java产生随机数需要有一个基值seedQ在W一U方法中基值缺省,则将pȝ旉作ؓseed?br>  普通方法:<br>  (1)public synonronized void setSeed(long seed)<br>  该方法是讑֮基值seed?br>  (2)public int nextInt()<br>  该方法是产生一个整型随机数?br>  (3)public long nextLong()<br>  该方法是产生一个long型随机数?br>  (4)public float nextFloat()<br>  该方法是产生一个Float型随机数?br>  (5)public double nextDouble()<br>  该方法是产生一个Double型随机数?br>  (6)public synchronized double nextGoussian()<br>  该方法是产生一个double型的Goussian随机数?br>  ?.2 RandomApp.java?br>  //import java.lang.*;<br>  import java.util.Random;<br><br>  public class RandomApp{<br>   public static void main(String args[]){<br>    Random ran1=new Random();<br>    Random ran2=new Random(12345);<br>    //创徏了两个类Random的对象?br>    System.out.println("The 1st set of random numbers:");<br>    System.out.println("\t Integer:"+ran1.nextInt());<br>    System.out.println("\t Long:"+ran1.nextLong());<br>    System.out.println("\t Float:"+ran1.nextFloat());<br>    System.out.println("\t Double:"+ran1.nextDouble());<br>    System.out.println("\t Gaussian:"+ran1.nextGaussian());<br>    //产生各种cd的随机数<br>    System.out.print("The 2nd set of random numbers:");<br>    for(int i=0;i<5;i++){<br>     System.out.println(ran2.nextInt()+" ");<br>     if(i==2) System.out.println();<br>     //产生同种cd的不同的随机数?br>     System.out.println();//原文如此<br>    }<br>   }<br>  }<br><br>  q行l果Q?br>  E:\java01>java RandomApp<br>  The 1st set of random numbers:<br>    Integer:-173899656<br>    Long:8056223819738127077<br>    Float:0.6293638<br>    Double:0.7888394520265607<br>    Gaussian:0.5015701094568733<br>  The 2nd set of random numbers:1553932502<br>  -2090749135<br>  -287790814<br>  -355989640<br>  -716867186<br>  E:\java01><br> <div>1.5 向量cVector<br><br>  Java.util.Vector提供了向?Vector)cM实现cM动态数l的功能。在Java语言中。正如在一开始就提到q,是没有指针概늚Q但如果能正灵zd使用指针又确实可以大大提高程序的质量Q比如在C、C++中所?#8220;动态数l?#8221;一般都由指针来实现。ؓ了I补这点缺PJava提供了丰富的cd来方便编E者用,VectorcM是其中之一。事实上Q灵zM用数l也可完成向量类的功能,但向量类中提供的大量Ҏ大大方便了用L使用?br>  创徏了一个向量类的对象后Q可以往其中随意地插入不同的cȝ对象Q既不需֏cd也不需预先选定向量的容量,q可方便地进行查找。对于预先不知或不愿预先定义数组大小Qƈ需频繁q行查找、插入和删除工作的情况,可以考虑使用向量cR?br>  向量cL供了三种构造方法:<br>  public vector()<br>  public vector(int initialcapacity,int capacityIncrement)<br>  public vector(int initialcapacity)<br>  使用W一U方法,pȝ会自动对向量对象q行理。若使用后两U方法,则系l将Ҏ参数initialcapacity讑֮向量对象的容?卛_量对象可存储数据的大?Q当真正存放的数据个数超q容量时Q系l会扩充向量对象的存储容量。参数capacityIncrementl定了每ơ扩充的扩充倹{当capacityIncrement?Ӟ则每ơ扩充一倍。利用这个功能可以优化存储?br>  在VectorcM提供了各U方法方便用户用:<br>  ■插入功?br>  (1)public final synchronized void addElement(Object obj)<br>  obj插入向量的尾部。obj可以是Q何类的对象。对同一个向量对象,可在其中插入不同cȝ对象。但插入的应是对象而不是数|所以插入数值时要注意将数D{换成相应的对象?br>  ?nbsp;要插入一个整?Ӟ不要直接调用v1.addElement(1)Q正的Ҏ为:<br>  Vector v1=new Vector();<br>  Integer integer1=new Integer(1);<br>  v1.addElement(integer1);<br>  (2)public final synchronized void setElementAt(object obj,int index)<br>  index处的对象设成objQ原来的对象被覆盖?br>  (3)public final synchronized void insertElementAt(Object obj,int index)<br>  在index指定的位|插入objQ原来对象以及此后的对象依次往后顺延?br>  ■删除功?br>  (1)public final synchronized void removeElement(Object obj)<br>  从向量中删除obj。若有多个存在,则从向量头开始试Q删除找到的W一个与obj相同的向量成员?br>  (2)public final synchronized void removeAllElement()<br>  删除向量中所有的对象?br>  (3)public final synchronized void removeElementlAt(int index)<br>  删除index所指的地方的对象?br>  ■查询搜索功?br>  (1)public final int indexOf(Object obj)<br>  从向量头开始搜索obj ,q回所遇到的第一个obj对应的下标,若不存在此objQ返?1?br>  (2)public final synchronized int indexOf(Object obj,int index)<br>  从index所表示的下标处开始搜索obj?br>  (3)public final int lastIndexOf(Object obj)<br>  从向量尾部开始逆向搜烦obj?br>  (4)public final synchronized int lastIndexOf(Object obj,int index)<br>  从index所表示的下标处由尾臛_逆向搜烦obj?br>  (5)public final synchronized Object firstElement()<br>  获取向量对象中的首个obj?br>  (6)public final synchronized Object lastelement()<br>  获取向量对象中的最后一个obj?br>  了解了向量的最基本的方法后Q我们来看一下例8.3VectorApp.java?br>  ?.3 VectorApp.java?br>  import java.util.Vector;<br>  import java.lang.*;//q一句不应该要,但原文如?br>  import java.util.Enumeration;<br>  public class VectorApp{<br>   public static void main(String[] args){<br>    Vector v1=new Vector();<br>    Integer integer1=new Integer(1);<br>    v1.addElement("one");<br>    //加入的ؓ字符串对?br>    v1.addElement(integer1);<br>    v1.addElement(integer1);<br>    //加入的ؓInteger的对?br>    v1.addElement("two");<br>    v1.addElement(new Integer(2));<br>    v1.addElement(integer1);<br>    v1.addElement(integer1);<br>    System.out.println("The vector v1 is:\n\t"+v1);<br>    //v1转换成字W串q打?br>    v1.insertElementAt("three",2);<br>    v1.insertElementAt(new Float(3.9),3);<br>    System.out.println("The vector v1(used method insertElementAt()) is:\n\t "+v1);<br>    //往指定位置插入新的对象Q指定位|后的对象依ơ往后顺?br>    v1.setElementAt("four",2);<br>    System.out.println("The vector v1(used method setElementAt()) is:\n\t "+v1);<br>    //指定位|的对象讄为新的对?br>    v1.removeElement(integer1);<br>    //从向量对象v1中删除对象integer1׃存在多个integer1所以从头开?br>    //找,删除扑ֈ的第一个integer1<br>    Enumeration enum=v1.elements();<br>    System.out.print("The vector v1(used method removeElement())is:");<br>    while(enum.hasMoreElements())<br>    System.out.print(enum.nextElement()+" ");<br>    System.out.println();<br>    //使用枚Dc?Enumeration)的方法来获取向量对象的每个元?br>    System.out.println("The position of object 1(top-to-bottom):"<br>     + v1.indexOf(integer1));<br>    System.out.println("The position of object 1(tottom-to-top):"<br>     +v1.lastIndexOf(integer1));<br>    //按不同的方向查找对象integer1所处的位置<br>    v1.setSize(4);<br>    System.out.println("The new vector(resized the vector)is:"+v1);<br>    //重新讄v1的大,多余的元素被行弃<br>   }<br>  }<br>  q行l果Q?br>  E:\java01>java VectorApp<br>  The vector v1 is:<br>     [one, 1, 1, two, 2, 1, 1]<br>  The vector v1(used method insertElementAt()) is:<br>     [one, 1, three, 3.9, 1, two, 2, 1, 1]<br>  The vector v1(used method setElementAt()) is:<br>     [one, 1, four, 3.9, 1, two, 2, 1, 1]<br>  The vector v1(used method removeElement())is:one four 3.9 1 two 2 1 1<br>  The position of object 1(top-to-bottom):3<br>  The position of object 1(tottom-to-top):7<br>  The new vector(resized the vector)is:[one, four, 3.9, 1]<br>  E:\java01><br>  从例1.3q行的结果中可以清楚C解上面各U方法的作用Q另外还有几炚w解释?br>  (1)cVector定义了方?br>  public final int size()<br>  此方法用于获取向量元素的个数。它的返回值是向是中实际存在的元素个数Q而非向量定w。可以调用方法capactly()来获取容量倹{?br>  ҎQ?br>  public final synchronized void setsize(int newsize)<br>  此方法用来定义向量大。若向量对象现有成员个数已超q了newsize的|则超q部分的多余元素会丢失?br>  (2)E序中定义了Enumerationcȝ一个对?br>  Enumeration是java.util中的一个接口类Q在Enumeration中封装了有关枚D数据集合的方法?br>  在Enumeration中提供了ҎhawMoreElement()来判断集合中是束q有其它元素和方法nextElement()来获取下一个元素。利用这两个Ҏ可以依次获得集合中元素?br>  Vector中提供方法:<br>  public final synchronized Enumeration elements()<br>  此方法将向量对象对应C个枚丄型。java.util包中的其它类中也大都有这cL法,以便于用戯取对应的枚Dcd?br><br>1.6 栈类Stack<br><br>  StackcLVectorcȝ子类。它向用h供了堆栈q种高的数据结构。栈的基本特性就是先q后出。即先放入栈中的元素后被推出。StackcM提供了相应方法完成栈的有x作?br>  基本ҎQ?br>  public Object push(Object Hem)<br>  Hem压入栈中QHem可以是Q何类的对象?br>  public Object pop()<br>  弹出一个对象?br>  public Object peek()<br>  q回栈顶元素Q但不弹出此元素?br>  public int search(Object obj)<br>  搜烦对象obj,q回它所处的位置?br>  public boolean empty()<br>  判别栈是否ؓI?br>  ?.4 StackApp.java使用了上面的各种Ҏ?br>  ?.4 StackApp.java?br>  import java.lang.*;<br>  import java.util.*;<br>  public class StackApp{<br>   public static void main(String args[]){<br>    Stack sta=new Stack();<br>    sta.push("Apple");<br>    sta.push("banana");<br>    sta.push("Cherry");<br>    //压入的ؓ字符串对?br>    sta.push(new Integer(2));<br>    //压入的ؓInteger的对象,gؓ2<br>    sta.push(new Float(3.5));<br>    //压入的ؓFloat的对象,gؓ3.5<br>    System.out.println("The stack is,"+sta);<br>    //对应栈sta<br>    System.out.println("The top of stack is:"+sta.peek());<br>    //对应栈顶元素Q但不将此元素弹?br>    System.out.println("The position of object Cherry is:"<br>    +sta.search("cherry"));<br>    //打印对象Cherry所处的位置<br>    System.out.print("Pop the element of the stack:");<br>    while(!sta.empty())<br>    System.out.print(sta.pop()+" ");<br>    System.out.println();<br>    //栈中的元素依次弹出q打印。与W一ơ打印的sta的结果比较,可看出栈<br>    //先进后出的特?br>   }<br>  }<br>  q行l果(?</div> <img src ="http://www.aygfsteel.com/yesjoy/aggbug/126042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yesjoy/" target="_blank">★yesjoy?/a> 2007-06-25 10:30 <a href="http://www.aygfsteel.com/yesjoy/articles/126042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ů</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӽ</a>| <a href="http://" target="_blank">ij</a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">ߺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">͡</a>| <a href="http://" target="_blank">̳</a>| <a href="http://" target="_blank">°Ͷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">Ϳ</a>| <a href="http://" target="_blank">Ƕ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">̶</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ױ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ﴨ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>