JavaSE 軟件工程師 認證考試試卷3


JavaSE 軟件工程師

認證考試試卷

 

筆試

 

 

考試時間150分鍾

 

總分 100分

 

姓    名_______________________

身份證號_______________________

准考證號_______________________

 

 

 

 

考試結束后考卷必須收回,否則考試成績無效

 

 

尚學堂JavaSE軟件工程師認證考試試卷

 

一、    填空題(共20個題目,總計20分)

  1. Java虛擬機就是一個虛擬的用於執行   字節碼文件       的計算機。它是Java最核心的技術,是Java跨平台的基礎。
  2. 使用Java開發應用程序包括編寫源程序,編譯源程序,解釋並運行三個步驟,其中編譯和解釋分別需要使用javac.exe和   java.exe         實現。
  3. 一個十進制整數轉換成八進制數后是1234,則它轉為十六進制數后是    29C        
  4. Java中浮點數據類型包括float和double兩種類型,其中float類型又被稱作單精度類型,尾數可以精確到7位有效數字,在內存中占用     4       個字節。
    1. 使用Math.random( )返回帶正號的 double值,該值大於等於0.0且小於1.0。使用該函數生成[30,60]之間的隨機整數的語句是:(int)(Math.random( )*31)+30
  5. for循環的語法格式是for (表達式1;表達式2;表達式3) {循環體},其中在整個循環過程中只執行一次的部分是  表達式1         
    1. Java中    構造方法       方法與類名相同,沒有返回值,在創建對象實例時由new運算符自動調用。
  6.    Package        語句作為Java源文件的第一條語句,指明該源文件定義的類所在的包。
  7. 局部變量的名字與成員變量的名字相同,若想在該方法內使用成員變量,必須使用關鍵字   this        
  8. Java異常處理中,如果一個方法中出現了多個Checked異常,可以在方法聲明中使用關鍵字   throws        聲明拋出,各異常類型之間使用逗號分隔。
  9. 聲明數組僅僅是給出了數組名字和元素的數據類型,要想真正地使用數組還必須為它    分配內存空間                 
    1. Arrays類的binarySearch( ) 方法使用二分搜索法來搜索指定的數組,以獲得指定的值。必須在進行此調用之前對數組進行   排序 ,否則否則結果是不確定的。
    2. Object類有一個public方法是  toString()    ,一個對象通過調用該方法可以獲得該對象的字符串表示。
    3. StringBuilder類是StringBuffer類的替代類,兩者的共同點是都是可變長度字符串,其中線程安全的類是  StringBuffer 
    4. Java集合框架提供了一套性能優良、使用方便的接口和類,包括Collection和Map兩大類,它們都位於  java.util包中
    5.   Treeset            是一種Collection類型的集合類,其中元素唯一,並采用二叉樹作為存儲結構,元素按照自然順序排列。
    6. Java IO流可以分為節點流和處理流兩大類,其中前者處於IO操作的第一線,所有操作必須通過他們進行。
    7. 處於新建狀態的線程被啟動后,將進入線程隊列排隊等待CPU服務,此時它已經具備了運行條件,一旦輪到享用CPU資源時,就可以脫離創建它的主線程獨立開始自己的生命周期。上述線程是處於     就緒         狀態。
    8. 在線程通信中,調用  wait()   方法可以是當前線程處於等待狀態,而為了喚醒一個等待的線程,需要調用的方法是notify( )。
    9. 在Socket編程中,IP地址用來標志一台計算機,但是一台計算機上可能提供多種應用程序,使用   端口號           來區分這些應用程序。

 

二、    選擇題(共25個題目,總計25分)

 

1)

有一段Java 程序,其中public類名是A1,那么保存它的源文件名可以是(  A   )。(選擇一項)

 

 

 

 

A

A1.java

 

B.

A1.class

 

C.

A1

 

D.

都不對

 

2)

Java中,byte數據類型的取值范圍是(  A   )。(選擇一項)

 

 

 

 

A

-128 ~ 127

 

B.

-228 ~128

 

C.

-255 ~ 256

 

D.

-255 ~ 255

 

3)

有以下方法的定義,請選擇該方法的返回類型(  D   )。(選擇一項)

 

            method(byte x, double y) {

         return  (short)x/y*2;

}

 

 

 

 

A

byte

 

B.

short

 

C.

int

 

D.

double

 

4)

以下選項中添加到代碼中橫線處會出現錯誤的是(  BD   )。(選擇二項)

 

public class Test {

         public float aMethod(float a, float b) {

                  return 0;       

         }

                                       

}

 

 

 

 

A

public float  aMethod(float a, float b, float c) {

                  return 0;

}

 

B.

public float  aMethod(float c, float d) {

                  return 0;

}

 

C.

public int  aMethod(int a, int b) {

         return 0;

}

 

D.

private int  aMethod(float a, float b) {

         return 0;

}

 

5)

閱讀下列文件定入的Java代碼,其執行結果是(    D )。(選擇一項)

 

public class Test {

         public static void main(String[] args) {

                  char ch = 'c';

                  switch (ch) {

                      case 'a':

                              System.out.print("a");         break;

                      case 'b':

                              System.out.print("ab");

                      case 'c':

                              System.out.print("c");

                      default:

                              System.out.print("d");

                  }

         }

}

 

 

 

 

A

a

 

B.

b

 

C.

c

 

D.

cd

 

6)

下面程序執行的結果是在屏幕上打印(    B )次Java基礎班。(選擇一項)

 

for(int  i=1;i<=10;i++){

         if (i<5)

                  continue;

         System.out.println("Java基礎班");

}

 

 

 

 

A

5

 

B.

6

 

C.

7

 

D.

8

 

7)

以下四個選項中和下面代碼功能相同的是(  B   )。(選擇一項)

 

int i = 1;

int sum = 0;

while (i <= 100) {

         if (i % 2 == 0)

                  sum = sum + i;

         i++;

}

 

 

 

 

A

for (int x =1; x<=100;x++){ sum=sum+x;}

 

B.

for (int x =0; x<=100;x+=2){ sum=sum+x;}

 

C.

for (int x =1; x<=100;x+=2){ sum=sum+x;}

 

D.

上述全對

 

8)

以下代碼中錯誤的語句是(  D   )。(選擇一項)

 

public class Something{

         public static void main(String[] args){

                  final Other o=new Other();

                  new Something().addOne(o);//1

         }

         public void addOne( Other o){

                  o.i++;//2

                  o =  new Other();//3

         }

}

class Other{

         public int i;

}

 

 

 

 

A

1

 

B.

2

 

C.

3

 

D.

沒有錯誤

 

9)

Java中,以下程序編譯運行后的輸出結果為(  D   )。(選擇一項)

 

public class Test {

    int x, y;

    Test(int x, int y) {

        this.x = x;

        this.y = y;

    }

    public static void main(String[] args) {

        Test pt1, pt2;

        pt1 = new Test(3, 3);

        pt2 = new Test(4, 4);

        System.out.print(pt1.x + pt2.x);

    }

}

 

 

 

 

A

6

 

B.

34

 

C.

8

 

D.

7

 

10)

下列選項中關於Java中類方法的說法錯誤的是(  A  C )。(選擇二項)

 

 

 

 

A

在類方法+中可用this來調用本類的類方法

 

B.

在類方法中調用本類的類方法時可直接調用

 

C.

在類方法中只能調用本類中的類方法

 

D.

在類方法中調用實例方法需要先創建對象

 

11)

下列選項中關於Javasuper關鍵字的說法正確的是(  AD   )。(選擇一項)

 

 

 

 

A

super關鍵字是在子類對象內部指代其父類對象的引用

 

B.

super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類

 

C.

子類通過super關鍵字只能調用父類的方法,而不能調用父類的屬性

 

D.

子類通過super關鍵字可以調用父類的構造方法

 

12)

編譯運行如下Java代碼,輸出結果是()。(選擇一項)

 

class Base {

         public void method(){

                  System.out.print ("Base method");

         }

}

class Child extends Base{   

         public void methodB(){

                  System.out.print ("Child methodB");

         }

}

class Sample {

         public static void main(String[] args) {

                  Base base= new Child();

                  base.methodB();

         }

}

 

 

 

 

A

Base method

 

B.

Child methodB

 

C.

Base method

Child methodB

 

D.

編譯錯誤

 

13)

Java中,關於引用數據類型的類型轉換說法正確的是(AB     )。(選擇二項)

 

 

 

 

A

引用數據類型的類型轉換有向上轉型和向下轉型

 

B.

向下轉型,必須轉換成其真實子類型,而不能隨意轉換

 

C.

向下轉型是自動進行的,也稱隱式轉換

 

D.

向上轉型可以使用instanceof操作符來判斷轉型的合法性

 

14)

Java接口中,下列選項中屬於有效的方法聲明是(  AC   )。(選擇二項)

 

 

 

 

A

public void aMethod( );

 

B.

final void aMethod( );

 

C.

void aMethod(){ }

 

D.

private void aMethod( );

 

 

 

15)

以下選項中關於匿名內部類的說法正確的是(   BD  )。(選擇二項)

 

 

 

 

A.

匿名內部類可以實現多個接口,或者繼承一個父類

 

B.

匿名內部類不能是抽象類,必須實現它的抽象父類或者接口里包含的所有抽象方法

 

C.

匿名內部類沒有類名,所以匿名內部類不等定義構造方法

 

D.

匿名內部類可以直接訪問外部類的所有局部變量

16)

閱讀如下Java代碼,在控制台輸入"-1",執行結果是(B)。(選擇一項)

 

public class Demo {

         public static void main(String[] args) {

                  Scanner input = new Scanner(System.in);

                  System.out.print("請輸入數字:");

                  try {

                          int num = input.nextInt();

                          if (num < 1 || num > 4) {

                                   throw new Exception("必須在1-4之間!");

                          }

                  } catch (InputMismatchException e) {

                          System.out.println("InputMismatchException");

                  } catch (Exception e) {

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

                  }

         }

}

 

 

 

 

A

輸出:InputMismatchException

 

B.

輸出:必須在1-4之間!

 

C.

什么也沒輸出

 

D.

編譯錯誤

       

 

17)

關於Integer類中的靜態方法parseInt()方法說法正確的是( BD    )。(選擇二項)

 

 

 

 

A

將小數轉換成整數

 

B.

將數字格式的字符串轉成整數

 

C.

使用parseInt()方法可能拋出異常

 

D.

將單個字符轉成整數

 

18)

以下程序片段中可以正常編譯的是(   C  )。(選擇一項)

 

 

 

 

A

String s = "Gone with the wind"; 

String k = s+t;

String t = "good";

 

B.

String s = "Gone with the wind";

String t;          

t = s[3]+"one";

 

C.

String s = "Gone with the wind";

String stanfard = s.toUpperCase();

 

D.

String s = "home directory";

String t = s – "directory";

19)

以下代碼的執行結果是( C   )。(選擇一項)

 

Set<String> s=new HashSet<String>();

s.add("abc");

s.add("abc");

s.add("abcd");

s.add("ABC");

System.out.println(s.size());

 

 

 

 

A.

1

 

B.

2

 

C.

3

 

D.

4

       

 

20)

File類中的isDirectory( )方法的作用是( BD    )。(選擇二項)

 

 

 

 

A.

判斷File對象封裝的是否是文件

 

B.

判斷File對象封裝的是否是目錄

 

C.

判斷File對象中封裝的是否是根目錄

 

D.

返回值類型是boolean

 

21)

閱讀下列文件定入的JAVA代碼,共有(  C   )處錯誤。(選擇一項)

 

import java.io.*;

public class TestIO {

         public static void main(String []args){

                  String str ="文件寫入練習";

                  FileWriter fw = null;        //1

                  try{

                          fw = new FileWriter("c:\mytext.txt");  //2

                          fw.writerToEnd(str);   //3

                  }catch(IOException e){   //4

                          e.printStackTrace();

                  }finally{

                          //此處省略關閉流

                  }

         }

}

 

 

 

 

A

0

 

B.

1

 

C.

2

 

D.

3

 

22)

以下選項中關於Java中線程控制方法的說法正確的是( AD    )。(選擇二項)

 

 

 

 

A.

join ( ) 的作用是阻塞指定線程等到另一個線程完成以后再繼續執行

 

B.

sleep ( ) 的作用是讓當前正在執行線程暫停,線程將轉入就緒狀態

 

C.

yield ( ) 的作用是使線程停止運行一段時間,將處於阻塞狀態

 

D.

setDaemon( )的作用是將指定的線程設置成后台線程

23)

Java中線程安全問題是通過關鍵字(  C   )解決的?。(選擇一項)

 

 

 

 

A.

finally

 

B.

wait( )

 

C.

synchronized

 

D.

notify( )

24)

ServerSocket的監聽方法accept( )方法的返回值類型是(  A   )。(選擇一項)

 

 

 

 

A.

Socket

 

B.

void

 

C.

Object

 

D.

DatagramSocket

25)

以下選項中關於Java中獲取Class對象的方式正確的是( C D   )。(選擇二項)

 

 

 

 

A.

Class c1 = String.getClass( );

 

B.

String str = new String(“bjsxt”);

Class clazz = str.class;

 

C.

Class c1 = Integer.TYPE;

 

D.

Class clazz = Class.forName("java.lang.Object");

 

三、    判斷題(共20個題目,總計10分,正確,錯誤×

  1. 和C++相比,Java取消了指針,不再有多重繼承,不需要手動回收垃圾。(    T)
  2. Java具有一次編譯,到處運行的特點,其含義是Java的源代碼可以一次性編譯成計算機的機器碼,並在不同的平台上運行。(  F  )
  3. char 數據類型用來表示在ASCII編碼表中的一個字符,在內存中占用1個字節空間,所以不能表示一個漢字。(  F  )
  4. 賦值和條件運算符是運算級別最低的兩種運算符,兩者都具有自右向左的結合性。( T   )
  5. 多重循環是指一個循環體內又包含另一個完整的循環結構。外層循環變量變化一次,內層循環變量要從頭到尾變化一遍。(  T  )
  6. 任何可用遞歸解決的問題也能使用循環解決,遞歸既花時間又耗內存,在要求高性能的情況下盡量避免使用遞歸。( T   )
  7. 訪問權限是private的變量,只能在本類和與本類同一個包中的其他類使用。(   F )
  8. 對於子類創建的一個對象,如果子類繼承了父類的方法,未重寫,則運行時調用子類的方法。( F   )
  9. ArithmeticException,ArrayIndexOutOfBoundsException,NullPointerException是運行時異常,而ClassNotFoundException,ClassCastException是Checked異常。(F    )
  10. 數組的長度是確定的,數組一旦被創建,它的大小就是不可以改變的。但是其元素類型可以是不同類型,允許出現混合類型。(  F  )
  11. 創建數組后,系統會給每個數組元素一個默認值,如double型元素的默認值是0.0。( T   )
  12. JK1.5后提供了自動裝箱和自動拆箱功能,從而可以實現基本數據類型和對應包裝類之間的自動轉換,簡化了操作。( T   )
  13. java.sql.Date類和java.util.Date類的關系是前者是后者的父類,其中前者沒有提供無參數構造方法,而后者可以提供無參數構造方法來獲取當前時間。( F   )
  14. Collection是Java集合頂級接口,其中的元素無序,唯一。Java平台不提供這個接口任何直接的實現。( T   )
  15. Iterator接口可以遍歷任何Collection接口的實現類,可以從一個Collection中使用iterator( )方法來獲取迭代器實例。迭代器取代了Java集合框架中的Enumeration。(T )
  16. 序列化是指將字節序列轉換成Java對象,只有實現了Serializable接口的類的對象才可以被序列化。(F   )
  17. 一個進程可以包括多個線程。兩者的一個主要區別是:線程是資源分配的單位,而進程CPU調度和執行的單位。( F   )
  18. 用new關鍵字建立一個線程對象后,該線程對象就處於新生狀態。處於新生狀態的線程有自己的內存空間,通過調用start進入就緒狀態。( T   )
  19. TCP協議是一種面向無連接的、可靠的、基於字節流的傳輸層通信協議,該協議占用系統資源多、效率較低。(  F  )
  20. Java反射技術中,對於一個private修飾的成員變量,可以再設置setAccessible(true)后進行暴力訪問。(  T  )

 

四、    簡答題(共5個題目,總計25分)

  1. 面向過程和面向對象的區別。(5分)
    1. 編程思路不同: 面向過程以實現功能的函數開發為主,而面向對象要首先抽象出類、屬性及其方法,然后通過實例化類、執行方法來完成功能。(1分)
    2. 封裝性:都具有封裝性,但是面向過程是封裝的是功能,而面向對象封裝的是數據和功能。(1分)
    3. 面向對象具有繼承性和多態性,而面向過程沒有繼承性和多態性,所以面向對象優勢是明顯。(1分)
    4. 面向對象耦合性低,更利於修改維護。(蓋澆飯/蛋炒飯)。(1分)
    5. 面向過程更適合解決簡單問題。面向對象更適合解決復雜問題。(1分)

 

  1. Error和Exception的區別。(5分)
    1. Error類,表示僅靠程序本身無法恢復的嚴重錯誤,比如說內存溢出、動態鏈接異常、虛擬機錯誤。(1分)應用程序不應該拋出這種類型的對象。假如出現這種錯誤,除了盡力使程序安全退出外,在其他方面是無能為力的。(1分)
    2. Exception類,由Java應用程序拋出和處理的非嚴重錯誤,比如所需文件沒有找到、零作除數,數組下標越界等。(1分)它的各種不同子類分別對應不同類型異常。可分為兩類:Checked異常和Runtime異常。(1分)所以在進行程序設計時,應該更關注Exception類。(1分)

 

  1. 列舉常用的字節輸入流和輸出流並說明其特點,至少5對。(5分)
    1. FileInputStream和FileOutputStream 節點流 以文件為數據源和目的地(1分)
    2. BufferedInputStream和BufferedOutputStream 處理流 提供了緩沖功能,提高讀寫效率(1分)
    3. DataInputStream和DataOutputStream 處理流 提供了方便讀寫基本數據類型和String數據的方法(1分)
    4. ObjectInputStream和ObjectOutputStream 處理流 不僅提供了方便讀寫基本數據類型和String數據的方法,也提供了讀寫引用類型數據的方法(1分)
    5. ByteArrayInputStream和ByteArrayOutputStream 節點流 以字節數組為數據源和目的地(1分)

 

  1. 創建線程的兩種方式分別是什么?各有什么優缺點。(5分)
    1. 方式1:繼承java.lang.Thread類,並覆蓋run() 方法。(1分)

      優勢:編寫簡單;(0.5分)

      劣勢:無法繼承其它父類(0.5分)

    1. 方式2:實現java.lang.Runnable接口,並實現run()方法。(1分)

      優勢:可繼承其它類,多線程可共享同一個Thread對象;(1分)

      劣勢:編程方式稍微復雜,如需訪問當前線程,需調用Thread.currentThread()方法(1分)

 

  1. 簡述基於UDP的Socket編程的主要步驟。

    提示:分別說明服務器端和客戶端的編程步驟。(5分)

    服務器端(server):

    1)       構造DatagramSocket實例。(0.5分)

    2)       創建數據包DatagramPacket,存取發送和接收的數據、IP和端口。(0.5分)

    3)       通過DatagramSocket實例的receive方法接收客戶端數據。(0.5分)

    4)       通過DatagramSocket的send方法向客戶端發出反饋信息。(0.5分)

    5)       關閉DatagramSocket。(0.5分)

    客戶端(client):

    1)       構造DatagramSocket實例。(0.5分)

    2)       創建數據包DatagramPacket,存取發送和接收的數據、IP和端口。(0.5分)

    3)       通過DatagramSocket實例的receive方法接收客戶端數據。(0.5分)

    4)       通過DatagramSocket的send方法向客戶端發出反饋信息. (0.5分)

    關閉DatagramSocket。(0.5

  1 五、    編碼題(共3個題目,總計20分)
  2 1.    給20塊錢買可樂,每瓶可樂3塊錢,喝完之后退瓶子可以換回1塊錢,問最多可以喝到多少瓶可樂。(5分)
  3   public static void main(String[] args) {
  4         int a = 20;//當前的錢數
  5         int price = 3;//可樂單價
  6         int sum = 0;//喝可樂數量
  7         int cola = 0;//可樂瓶子換的錢
  8         int s = 0;//剩下的錢
  9         while(a>price){
 10             cola = a/price;//可樂瓶子數量
 11             sum+=cola;//喝可樂數量
 12             s=a%price;//剩下的錢
 13             a =cola+s;//當前的錢=瓶子換的錢+剩下的錢
 14         }
 15         System.out.println("最多可以喝到:"+sum+"瓶可樂");
 16     }
 17 2.    寫一個方法對任意數據類型數組進行排序。(6分)具體要求如下:
 18 1)    方法聲明為public  void sortArr(Object arr[]){  }
 19 2)    方法中首先輸出排序前數組內容,然后進行排序,最后輸出排序后數組內容。
 20 3)    可以是冒泡排序或其他算法實現,不直接調用Java提供的方法實現排序。
 21 關鍵點:如何實現不同數據類型數組元素的大小比較
 22 
 23 public class Array_2 {
 24     public  void sortArr(int arr[]){
 25         int temp = 0;
 26         for(int i=0;i<arr.length;i++) {
 27             for(int j=i+1;j<arr.length;j++) {
 28                 if(arr[i]>arr[j]){
 29                     temp = arr[i];
 30                     arr[i] = arr[j];
 31                     arr[j] = temp;
 32                 }
 33             }
 34         }
 35         System.out.println(Arrays.toString(arr));
 36     }
 37     public static void main(String[] args) {
 38         int[] arr ={10,25,110,-20,18,-36,65,14,3};
 39         Array_2 a =new  Array_2();
 40         a.sortArr(arr);
 41     }
 42     
 43 }
 44 
 45 
 46 3.    實現List和Map數據的轉換。(9分)具體要求如下:
 47 功能1:定義方法public void listToMap( ){ }將List中Student元素封裝到Map中
 48 1)    使用構造方法Student(int id,String name,int age,String sex )創建多個學生信息並加入List
 49 2)    遍歷List,輸出每個Student信息
 50 3)    將List中數據放入Map,使用Student的id屬性作為key,使用Student對象信息作為value
 51 4)    遍歷Map,輸出每個Entry的key和value
 52 功能2:定義方法public void mapToList( ){ }將Map中Student映射信息封裝到List
 53 1)    創建實體類StudentEntry,可以存儲Map中每個Entry的信息
 54 2)    使用構造方法Student(int id,String name,int age,String sex )創建多個學生信息,並使用Student的id屬性作為key,存入Map
 55 3)    創建List對象,每個元素類型是StudentEntry
 56 4)    將Map中每個Entry信息放入List對象
 57 
 58 public class Student_3 {
 59 /**
 60  * 使用構造方法Student(int id,String name,int age,String sex )
 61  */
 62     private int id;
 63     private String name;
 64     private int age;
 65     private String sex;
 66 
 67     public Student_3() {
 68     }
 69 
 70     public Student_3(int id, String name, int age, String sex) {
 71         this.id = id;
 72         this.name = name;
 73         this.age = age;
 74         this.sex = sex;
 75     }
 76 
 77     public int getId() {
 78         return id;
 79     }
 80 
 81     public String getName() {
 82         return name;
 83     }
 84 
 85     public int getAge() {
 86         return age;
 87     }
 88 
 89     public String getSex() {
 90         return sex;
 91     }
 92 
 93     public void setId(int id) {
 94         this.id = id;
 95     }
 96 
 97     public void setName(String name) {
 98         this.name = name;
 99     }
100 
101     public void setAge(int age) {
102         this.age = age;
103     }
104 
105     public void setSex(String sex) {
106         this.sex = sex;
107     }
108 
109     @Override
110     public String toString() {
111         return "["+id +" "+ name +" "+ age +" "+ sex+"]";
112     }
113 }
114 import java.util.ArrayList;
115 import java.util.HashMap;
116 import java.util.Iterator;
117 import java.util.List;
118 import java.util.Map;
119 import java.util.Map.Entry;
120 import java.util.Set;
121 
122 
123 public class Test_3 {
124     //List集合轉Map集合
125     public void listToMap(Student_3 s1,Student_3 s2 ){ 
126         //1.創建List集合
127         List<Student_3> list = new ArrayList<>();
128         //2.創建Map集合
129         Map<Integer, Student_3> map = new HashMap<>();
130         //3.傳入學生對象
131         list.add(s1);
132         list.add(s2);
133         Iterator<Student_3> it = list.iterator();
134         //4.遍歷List集合
135         while(it.hasNext()){
136             Student_3 stu = it.next();
137             //5.將學生id作為Map集合的Key,學生對象作為Map集合的Vaul
138             map.put(stu.getId(), stu);
139         }
140         //6.遍歷Map集合
141         Set<Entry<Integer, Student_3>> entrySet = map.entrySet();
142         for (Entry<Integer, Student_3> en : entrySet) {
143             System.out.println(en);
144         }
145         
146     }
147     
148     //Map集合轉List集合
149     public void mapToList(Student_3 s3,Student_3 s4){
150         //1.創建Map集合
151         Map< Integer, Student_3> map = new HashMap<>();
152         //2.創建List集合
153         List<Student_3> list = new ArrayList<>();
154         //3.將學生id作為Map集合的Key,學生對象作為Map集合的Vaul
155         map.put(s3.getId(),s3);
156         map.put(s4.getId(),s4);
157         //4.遍歷Map集合
158         Set<Entry<Integer, Student_3>> entrySet = map.entrySet();
159         for (Entry<Integer, Student_3> e : entrySet) {
160             //5.將Map集合的值加入到Liat集合中
161             list.add(e.getValue());
162         }
163         //6.遍歷List集合
164         Iterator<Student_3> it = list.iterator();
165         while(it.hasNext()){
166             System.out.println(it.next());
167         }
168         
169     }
170     public static void main(String[] args) {
171         //創建四個學生對象
172         Student_3 s1 = new Student_3(101, "張三", 25, "男");
173         Student_3 s2 = new Student_3(102, "馬琴", 25, "女");
174         Student_3 s3 = new Student_3(103, "趙薇", 36, "女");
175         Student_3 s4 = new Student_3(104, "李小梅", 31, "女");
176         //創建Test_3的實例
177         Test_3 t = new Test_3();
178         System.out.println("List集合轉Map集合");
179         //調用List集合轉Map集合方法並傳入學生對象s1,s2
180         t.listToMap(s1,s2);
181         System.out.println("\n");
182         System.out.println("Map集合轉List集合");
183         //調用Map集合轉List集合方法並傳入學生對象s3,s4
184         t.mapToList(s3, s4);
185     }
186 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM