容器做業java
1、 填空題面試
2、 選擇題數組
1.安全 |
如下選項中關於Java集合的說法錯誤的是( AC )。(選擇二項)數據結構 |
|
|
|
|
|
A.框架 |
List接口和Set接口是Collections接口有兩個子接口ide |
|
B.工具 |
List接口中存放的元素具備有序,不惟一的特色性能 |
|
C.this |
Set接口中存放的元素具備無序,不惟一的特色 |
|
D. |
Map接口存放的是映射信息,每一個元素都是一個鍵值對 |
2. |
以下Java代碼,輸出的運行結果是( A )。(選擇一項) |
|
|
public class Test { public static void main(String[ ] args) { List<String> list=new ArrayList<String>(); list.add("str1"); list.add(2, "str2"); String s=list.get(1); System.out.println(s); } 下標越界異常 } |
|
|
|
|
|
A |
運行時出現異常 |
|
B. |
正確運行,輸出str1 |
|
C. |
正確運行,輸出str2 |
|
D. |
編譯時出現異常 |
3. |
如下Java代碼的做用是首先將一個數組的內容存入集合,而後判斷集合中是否有指定的元素存在,其中共有( D )處錯誤。(選擇一項) |
|
|
import java.util.List; public class Test { public int getIndexofArray(float[] f){ int rtn=-1; float objf=3.4;1 List list=null;2 for(int i=0;i<f.size( );i++){3 list.add(f[i]); } for(int i=0;i<list.size( );i++){ float tmp=(float)list.get(i); if(objf==tmp){ rtn=i; } } return rtn; } } |
|
|
|
|
|
A |
0 |
|
B. |
1 |
|
C. |
2 |
|
D. |
3 |
4. |
分析以下Java 代碼,編譯運行後將輸出( B )。(選擇一項) |
|
|
public class Test { public Test() { } static void print(List<Integer> al) { al.add(2); al = new ArrayList<Integer>(); al.add(3); al.add(4); } public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add(1); print(al); System.out.println(al.get(1)); } } |
|
|
|
|
|
A |
1 |
|
B. |
2 |
|
C. |
3 |
|
D. |
4 |
5. |
在Java中,下列集合類型能夠存儲無序、不重複的數據的是( D )。(選擇一項) |
|
|
|
|
|
A |
ArrayList |
|
B. |
LinkedList |
|
C. |
TreeSet |
|
D. |
HashSet |
6. |
如下代碼的執行結果是( C )。(選擇一項) |
|
|
Set<String> s=new HashSet<String>(); s.add("abc");1 s.add("abc");1 s.add("abcd");2 s.add("ABC");3 System.out.println(s.size()); |
|
|
|
|
|
A. |
1 |
|
B. |
2 |
|
C. |
3 |
|
D. |
4 |
7. |
給定以下Java代碼,編譯運行的結果是( C )。(選擇一項) |
|
|
public class Test { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); String s = "code"; map.put(s, "1"); map.put(s, "2"); System.out.println(map.size()); }元素的個數 } |
|
|
|
|
|
A |
編譯時發生錯誤 |
|
B. |
運行時引起異常 |
|
C. |
正確運行,輸出:1 |
|
D. |
正確運行,輸出:2 |
8. |
下面集合類中屬於非線程安全,且結構採用了哈希表的是( C )。(選擇一項) |
|
|
|
|
|
A. |
Vector |
|
B. |
ArrayList |
|
C. |
HashMap |
|
D. |
Hashtable |
9. |
在Java中,LinkedList類與ArrayList類同屬於集合框架類,下列( CD )選項中是LinkedList類有而ArrayList類沒有的方法。(選擇兩項) |
|
|
|
|
|
A |
add(Object o) |
|
B. |
add(int index,Object o) |
|
C. |
getFirst() |
|
D. |
removeLast() |
3、 判斷題
4、 簡答題 (首先熟練掌握筆記上 與集合相關的面試簡答題)
Collection是Java集合頂級接口,存儲一組不惟一,無序的對象;
Map集合是存儲鍵值對的集合,特色:key 惟一 value 容許重複
List接口和Set接口是Collections接口有兩個子接口;
List 接口存儲一組不惟一,有序的對象;
Set 接口存儲一組惟一,無序的對象;
實現原理相同,功能相同,都是長度可變的數組結構,不少狀況下能夠互用
二者的主要區別以下
Vector是早期JDK接口,ArrayList是替代Vector的新接口
Vector線程安全,效率低下;ArrayList重速度輕安全,線程非安全
實現原理相同,功能相同,底層都是哈希表結構,查詢速度快,在不少狀況下能夠互用
二者的主要區別以下
Hashtable是早期JDK提供的接口,HashMap是新版JDK提供的接口
Hashtable繼承Dictionary類,HashMap實現Map接口
Hashtable線程安全,HashMap線程非安全
Hashtable不容許null值,HashMap容許null值
5、 編碼題 (首先熟練掌握筆記上 與集合相關的需求小案例)
package test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; public class Books { String id; // 編號 String name; // 名稱 double price; // 價格 String press; // 出版社 // 全參構造方法 public Books(String id, String name, double price, String press) { super(); this.id = id; this.name = name; this.price = price; this.press = press; } // 重寫toString() @Override public String toString() { return "Books [id=" + id + ", name=" + name + ", price=" + price + ", press=" + press + "]"; } public static void main(String[] args) { // new5個圖書對象 Books b1 = new Books("001", "第1本書", 55.8, "第1出版社"); Books b2 = new Books("002", "第2本書", 49.9, "第2出版社"); Books b3 = new Books("003", "第3本書", 55.0, "第3出版社"); Books b4 = new Books("004", "第4本書", 48.5, "第4出版社"); Books b5 = new Books("005", "第5本書", 55.8, "第5出版社"); Books b6 = new Books("006", "第6本書", 53.6, "第6出版社"); // new一個List對象 List<Books> l = new ArrayList<Books>(); // 添加圖書對象到l l.add(b1); l.add(b2); l.add(b3); l.add(b4); l.add(b5); l.add(b6); // 遍歷輸出 for (Books s : l) { System.out.println(s); } System.out.println("======================================================"); // new一個HashMap對象 HashMap<String, Books> hm = new HashMap<String, Books>(); // 以編號作爲key添加圖書對象到hm hm.put(b1.id, b1); hm.put(b2.id, b2); hm.put(b3.id, b3); hm.put(b4.id, b4); hm.put(b5.id, b5); hm.put(b6.id, b6); // 得到全部key Set<String> ss = hm.keySet(); // 遍歷輸出 for (String s : ss) { System.out.println(hm.get(s)); } } }
提示:向HashSet中添加自定義類的對象信息,須要重寫hashCode和equals( )
向TreeSet中添加自定義類的對象信息,須要實現Comparable接口,指定比較規則
package test; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import bean.TestSet; public class TestSett { public static void main(String[] args) { TestSet b1 = new TestSet(1994, "b1", 15.5, "wty"); TestSet b1 = new TestSet(1994, "b1", 30, "wty"); TestSet b2 = new TestSet(1994, "b2", 50, "wty"); TestSet b3 = new TestSet(1993, "b3", 15.5, "wty"); TestSet b4 = new TestSet(1992, "b4", 15.5, "wty"); TestSet b5 = new TestSet(1991, "b5", 50, "wty1"); //使用HashSet存儲圖書並遍歷 Set<TestSet> hashSet = new HashSet<TestSet>(); hashSet.add(b1); hashSet.add(b1); hashSet.add(b2); hashSet.add(b3); hashSet.add(b4); hashSet.add(b5); hashSet.add(b1_1); System.out.println("遍歷輸出hashset"); System.out.println(hashSet.size()); for(TestSet book:hashSet){ System.out.println(book.toString()); } //使用TreeSet存儲圖書並遍歷 Set<TestSet> treeSet = new TreeSet<TestSet>(); treeSet.add(b1); treeSet.add(b1); treeSet.add(b2); treeSet.add(b3); treeSet.add(b4); treeSet.add(b5); treeSet.add(b1_1); System.out.println("遍歷輸出treeset"); System.out.println(treeSet.size()); for(TestSet book:treeSet){ System.out.println(book.toString()); } } } package bean; public class TestSet implements Comparable<TestSet> { public int id; public String name; public double price; public String press; public TestSet() { super(); } public TestSet(int id, String name, double price, String press) { super(); this.id = id; this.name = name; this.price = price; this.press = press; } public int compareTo(TestSet o) { return this.id-o.id; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((press == null) ? 0 : press.hashCode()); long temp; temp = Double.doubleToLongBits(price); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TestSet other = (TestSet) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (press == null) { if (other.press != null) return false; } else if (!press.equals(other.press)) return false; if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price)) return false; return true; } @Override public String toString() { return "Book [id=" + id + ", name=" + name + ", press=" + press+ ", price=" + price + "]"; } }
功能1:定義方法public void listToMap( ){ }將List中Student元素封裝到Map中
1) 使用構造方法Student(int id,String name,int age,String sex )建立多個學生信息並加入List
2) 遍歷List,輸出每一個Student信息
3) 將List中數據放入Map,使用Student的id屬性做爲key,使用Student對象信息做爲value
4) 遍歷Map,輸出每一個Entry的key和value
功能2:定義方法public void mapToList( ){ }將Map中Student映射信息封裝到List
1) 建立實體類StudentEntry,能夠存儲Map中每一個Entry的信息
2) 使用構造方法Student(int id,String name,int age,String sex )建立多個學生信息,並使用Student的id屬性做爲key,存入Map
3) 建立List對象,每一個元素類型是StudentEntry
4) 將Map中每一個Entry信息放入List對象
6、 可選題
package test; import java.util.HashMap; import java.util.Map; public class Email { public static void main(String[] args) { String str = "aa@sohu.com,bb@163.com,cc@sina.com"; System.out.println(str); //獲得每個email String strs[] = str.split(","); //存放分離後email的信息 Map<String,String> emailMap = new HashMap<String, String>(); for(String email:strs){ String temp[] = email.split("@"); //分割email存入map emailMap.put(temp[0], temp[1]); } System.out.println(emailMap.toString()); } }
推薦步驟:
a) 建立Student類,並指定按照年齡正序排列
b) 經過控制檯輸入多個不一樣Student信息。格式規定爲:編號#姓名#年齡
c) 取出字符串中相應信息放入Student對象,並將Student加入到集合中
d) 遍歷集合的過程當中將學生的信息輸入到記事本
難點:
e) 如何指定學生按照年齡正序排列
f) 若是從字符串「編號#姓名#年齡」中提取學生信息
g) 放入哪一種集合後能夠保證學生按照年齡大小正序排列
h) 如何將集合中學生信息寫入記事本,每一個學生數據佔單獨一行