日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaSE集合练习题

發布時間:2024/8/1 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaSE集合练习题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JavaSE集合練習題

  • 簡答
  • 編程
  • 參考文獻

簡答

1.Collection 和 Collections的區別

解:Collection是集合類的上級接口,繼承于他的接口主要有 Set 和 List

Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作

2.Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別

解:Set里的元素是不能重復的,用equals()方法判讀兩個Set是否相等

equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值

3.List, Set, Map是否繼承自Collection接口

解:List,Set 繼承自 Collection 接口

Map不是繼承Collection 接口

4.兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對

解:不對,有相同的 hash code

5.說出ArrayList,Vector, LinkedList的存儲性能和特性

解:共同點 :三個類都是實現了 List接口,存儲數據的特點相同:存儲有序的,可重復的數據區別: ArrayList :作為 List接口的主要實現類;線程不安全的,效率高;底層使用 Object[] elementData 存儲LinkedList:對于頻繁的插入,刪除操作,使用此類效率比 ArrayList高;底層使用雙向鏈表存儲Vector :作為 List接口的古老實現類;線程安全的,效率低;底層使用 Object[] elementData 存儲

6.HashMap和Hashtable的區別

1.HashMap與Hashtable都實現了Map接口。由于HashMap的非線程安全性,效率上可能高于Hashtable。Hashtable的方法是 Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須 為之提供外同步 2. HashMap允許將null作為一個entry的key或者value,而Hashtable不允許 3.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解 4.Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現 5.Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異

7.你所知道的集合類都有哪些?主要方法?

最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List 適用于按數值索引訪問元素的情形。 Map 提供了一個更通用的元素存儲方法。 Map 集合類用于存儲元素對(稱作"鍵""值"),其中每個鍵映射到一個值

編程

1.定義一個Collection接口類型的變量,引用一個Set集合的實現類,實現添加單個元素,添加另一個集合,刪除元素,判斷集合中是否包含一個元素,判斷是否為空,清除集合,返回集合里元素的個數等常用操作

注:Set接口中沒有額外定義新的方法,使用的都是 Collection 中聲明的方法

package com.atguigu.com;import java.util.Collection; import java.util.HashSet;public class exer1 {public static void main(String[] args) {Collection coll1 = new HashSet();//1.添加單個元素coll1.add(123);coll1.add("九十九");coll1.add(12.56);//2.添加另一個集合Collection coll2 = new HashSet();coll2.add("coll2");coll2.add(false);coll1.addAll(coll2);//3.刪除元素coll1.remove(12.56);//4.判斷集合中是否包含一個元素coll1.contains(false);//5.判斷是否為空coll1.isEmpty();//6.清除集合coll1.clear();//7.返回集合里元素的個數coll1.size();} }

2.創建Set接口的實現類,添加10個以上的元素,通過Iterator遍歷此集合元素

package com.atguigu.com;import java.util.HashSet; import java.util.Iterator; import java.util.Set;public class exer2 {public static void main(String[] args) {Set set = new HashSet();//添加元素set.add(12);set.add(12.4);set.add('c');set.add(true);set.add(false);set.add("九十八");set.add("學而不思則罔");set.add("思而不學則殆");set.add("溫故而知新");set.add("可以為師矣");//使用Iterator 遍歷此集合Iterator iterator = set.iterator();//搭配hasNext()和next()方法while(iterator.hasNext()){System.out.println(iterator.next());}} } c 12.4 false 九十八 學而不思則罔 溫故而知新 可以為師矣 思而不學則殆 12 true

3.創建Set接口的實現類,添加10個以上的元素,通過foreach遍歷此集合元素

package com.atguigu.com; import java.util.HashSet;import java.util.Set; public class exer3 {public static void main(String[] args) {Set set = new HashSet();//添加元素set.add(12);set.add(12.4);set.add('c');set.add(true);set.add(false);set.add("九十八");set.add("學而不思則罔");set.add("思而不學則殆");set.add("溫故而知新");set.add("可以為師矣");//使用foreach來遍歷集合//for(集合元素的類型 局部變量 : 集合對象){}for(Object i : set){System.out.println(i);}} } c 12.4 false 九十八 學而不思則罔 溫故而知新 可以為師矣 思而不學則殆 12 true

4.創建Set接口的實現類,添加10個以上的元素,要求能夠排序

注:向 TreeSet 中添加的數據,要求是相同類的對象

package com.atguigu.com;import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet;public class exer4 {public static void main(String[] args) {//定制排序Comparator com = new Comparator() {//對字符串進行排序 從大到小@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof String && o2 instanceof String){String str1 = (String)o1;String str2 = (String)o2;return -str1.compareTo(str2);}else{throw new RuntimeException("輸入數據類型不匹配!");}}};TreeSet tree = new TreeSet(com);tree.add("abcd");tree.add("cdac");tree.add("zsdc");Iterator iterator = tree.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}} } zsdc cdac abcd

記錄:java 比較器 comparable 和 comparator 需要復習,一調用比較器就犯迷糊

5.定義一個Collection接口類型的變量,引用一個List集合的實現類,實現添加單個元素,添加另一個集合,刪除元素,判斷集合中是否包含一個元素,判斷是否為空,清除集合,返回集合里元素的個數等常用操作

package com.atguigu.com;import java.util.ArrayList; import java.util.Collection;public class exer5 {public static void main(String[] args) {ArrayList list = new ArrayList();//1.添加單個元素 可重復list.add(123);list.add(456);list.add(false);list.add(456);//2.添加另一個集合ArrayList list1 = new ArrayList();list1.add(12.4);list1.add(34.6);list.add(list1);//將list1作為一個元素添加到list中list.addAll(list1);//將list1中的每個元素迭代添加到list中//3.刪除元素//3.1 按照元素刪除list.remove(false);//3.2按照索引刪除list.remove(2);//4.判斷集合中是否包含一個元素list.contains(true);//5.判斷是否為空list.isEmpty();//6.清除集合list.clear();//7.返回集合里元素的個數list.size();} }

6.創建ArrayList實例化對象,添加10個以上的元素,在2號位插入一個元素,獲得5號位元素,刪除6號位元素,修改7號位的元素;

package com.atguigu.com;import java.util.ArrayList;public class exer6 {public static void main(String[] args) {ArrayList list = new ArrayList();//演示 采用for循環迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2號位插入一個元素 2號位默認為索引list.add(2,"insert");//獲得5號位元素list.get(5);//刪除6號位元素 idea中可以顯示是索引還是元素值list.remove(6);//修改7號位的元素list.set(7,"new");} }

7.通過四種方法遍歷上題中的集合

package com.atguigu.com;import java.util.ArrayList; import java.util.Iterator;public class exer7 {public static void main(String[] args) {ArrayList list = new ArrayList();//演示 采用for循環迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2號位插入一個元素 2號位默認為索引list.add(2,"insert");//獲得5號位元素list.get(5);//刪除6號位元素 idea中可以顯示是索引還是元素值list.remove(6);//修改7號位的元素list.set(7,"new");//使用iterator 進行遍歷Iterator iterator = list.iterator();while(iterator.hasNext()){System.out.print(iterator.next() + " ");}System.out.println();//使用foreach 進行遍歷for(Object obj:list){System.out.print(obj + " ");}System.out.println();//使用for進行遍歷for(int i = 0; i < list.size();i++){System.out.print(list.get(i) + " ");}System.out.println();//使用Lambda表達式的forEach 之前沒用過這種結構list.forEach(item -> System.out.print(item + " "));} } 0 1 insert 2 3 4 6 new 8 9 0 1 insert 2 3 4 6 new 8 9 0 1 insert 2 3 4 6 new 8 9 0 1 insert 2 3 4 6 new 8 9

8.按要求實現下列問題
1)封裝一個新聞類,包含標題和內容屬性,提供get、set方法,重寫toString方法,打印對象時只打印標題;

2)只提供一個帶參數的構造器,實例化對象時,只初始化標題;并且實例化兩個對象:
新聞一:中國多地遭霧霾籠罩空氣質量再成熱議話題
新聞二:春節臨近北京“賣房熱”

3)將新聞對象添加到ArrayList集合中,并且使用ListIterator倒序遍歷;

4)在遍歷集合過程中,對新聞標題進行處理,超過15字的只保留前14個,然后在后邊加“…”

5)在控制臺打印遍歷出經過處理的新聞標題;

package com.atguigu.com;public class News {private String title;private String content;public News(String title){this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}@Overridepublic String toString() {return "News{" +"title='" + title + '\'' +'}';} } package com.atguigu.com;import java.util.ArrayList; import java.util.Collection; import java.util.ListIterator;public class NewsTest {public static void main(String[] args) {News n1 = new News("中國多地遭霧霾籠罩空氣質量再成熱議話題");News n2 = new News("春節臨近北京\"賣房熱\"");ArrayList list = new ArrayList();list.add(n1);list.add(n2);ListIterator iterator = list.listIterator();//指針位于開頭while(iterator.hasNext()) {//不斷循環 將指針位于結尾iterator.next();}//逆向遍歷while(iterator.hasPrevious()) {Object obj = iterator.previous();News n = (News) obj;String title = n.getTitle();if(title.length() > 15){System.out.println(title.substring(0,15) + "...");}else{System.out.println(title);}}} }

9 定義一個Map接口類型的變量,引用一個實現類,添加鍵值對,判斷集合中是否包含某一key值,通過某一key值得到value值,通過某一key刪除鍵值對,把另一個map集合添加到此map集合,判斷是否為空,清除集合,返回集合里元素的個數等常用操作

package com.atguigu.com;import java.util.HashMap;public class exer9 {public static void main(String[] args) {HashMap map = new HashMap();//添加鍵值對map.put("AA",123);map.put(45,123);map.put("BB",56);//判斷集合中是否包含某一key值map.containsKey("CC");//通過某一key值得到value值map.get("AA");//通過某一key刪除鍵值對map.remove("BB");//把另一個map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判斷是否為空map.isEmpty();//清除集合map.clear();//返回集合里元素的個數map.size();} }

10.通過兩種方法遍歷上題中的map集合

package com.atguigu.com;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;public class exer10 {public static void main(String[] args) {HashMap map = new HashMap();//添加鍵值對map.put("AA",123);map.put(45,123);map.put("BB",56);//判斷集合中是否包含某一key值map.containsKey("CC");//通過某一key值得到value值map.get("AA");//通過某一key刪除鍵值對map.remove("BB");//把另一個map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判斷是否為空map.isEmpty();//清除集合//map.clear();//返回集合里元素的個數map.size();//遍歷集合//方式一:entrySet()Set entrySet = map.entrySet();Iterator iterator = entrySet.iterator();while (iterator.hasNext()){Object obj = iterator.next();//entrySet 集合中的元素都是entryMap.Entry entry = (Map.Entry) obj;System.out.println(entry.getKey() +"----->" + entry.getValue());}System.out.println("---------------");//方式二Set keySet = map.keySet();Iterator iterator1 = keySet.iterator();while (iterator1.hasNext()){Object key = iterator1.next();Object value = map.get(key);System.out.println(key +"----->" + value);}} }

11.使用Map接口的實現類完成員工工資(姓名–工資)的摸擬:

1)添加幾條信息
2)列出所有的員工姓名
3列出所有員工姓名及其工資
4)刪除名叫“Tom”的員工信息
5)輸出Jack的工資,并將其工資加1000元(通過取值實現)
6)將所有工資低于1000元的員工的工資上漲20%(通過取值實現)

package com.atguigu.com;import java.util.HashMap; import java.util.Iterator; import java.util.Set;public class exer11 {public static void main(String[] args) {HashMap map = new HashMap();//添加數據map.put("張三",500);map.put("李四",600);map.put("Tom",6000);map.put("王五",7000);map.put("jack",8000);//列出所有的員工姓名Set nameSet = map.keySet();Iterator iterator = nameSet.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}System.out.println("***************");//列出所有員工姓名及其工資Iterator iterator1 = nameSet.iterator();while (iterator1.hasNext()){Object name = iterator1.next();Object salary = map.get(name);System.out.println(name +"----->" + salary);}//刪除名叫""Tom"”"的員工信息map.remove("Tom");//輸出Jack的工資,并將其工資加1000元(通過取值實現)double salaryJack = (double)map.get("jack");System.out.println(salaryJack);map.put("jack",salaryJack + 1000);Set nameSet2 = map.keySet();Iterator iterator2 = nameSet2.iterator();while(iterator2.hasNext()){Object name = iterator2.next();double salary = (double)map.get(name);if(salary < 1000){map.put(name,salary * 1.2);}}} }

參考文獻

鏈接: B站尚硅谷宋紅康Java.

總結

以上是生活随笔為你收集整理的JavaSE集合练习题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。