JavaSE集合练习题
JavaSE集合練習(xí)題
- 簡(jiǎn)答
- 編程
- 參考文獻(xiàn)
簡(jiǎn)答
1.Collection 和 Collections的區(qū)別
解:Collection是集合類的上級(jí)接口,繼承于他的接口主要有 Set 和 List
Collections是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線程安全化等操作
2.Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別
解:Set里的元素是不能重復(fù)的,用equals()方法判讀兩個(gè)Set是否相等
equals()和==方法決定引用值是否指向同一對(duì)象equals()在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類型相配的話,返回真值
3.List, Set, Map是否繼承自Collection接口
解:List,Set 繼承自 Collection 接口
Map不是繼承Collection 接口
4.兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)
解:不對(duì),有相同的 hash code
5.說(shuō)出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性
解:共同點(diǎn) :三個(gè)類都是實(shí)現(xiàn)了 List接口,存儲(chǔ)數(shù)據(jù)的特點(diǎn)相同:存儲(chǔ)有序的,可重復(fù)的數(shù)據(jù)區(qū)別: ArrayList :作為 List接口的主要實(shí)現(xiàn)類;線程不安全的,效率高;底層使用 Object[] elementData 存儲(chǔ)LinkedList:對(duì)于頻繁的插入,刪除操作,使用此類效率比 ArrayList高;底層使用雙向鏈表存儲(chǔ)Vector :作為 List接口的古老實(shí)現(xiàn)類;線程安全的,效率低;底層使用 Object[] elementData 存儲(chǔ)6.HashMap和Hashtable的區(qū)別
1.HashMap與Hashtable都實(shí)現(xiàn)了Map接口。由于HashMap的非線程安全性,效率上可能高于Hashtable。Hashtable的方法是 Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須 為之提供外同步 2. HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許 3.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解 4.Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn) 5.Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異7.你所知道的集合類都有哪些?主要方法?
最常用的集合類是 List 和 Map。 List 的具體實(shí)現(xiàn)包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲(chǔ)和操作任何類型對(duì)象的元素列表。 List 適用于按數(shù)值索引訪問(wèn)元素的情形。 Map 提供了一個(gè)更通用的元素存儲(chǔ)方法。 Map 集合類用于存儲(chǔ)元素對(duì)(稱作"鍵"和"值"),其中每個(gè)鍵映射到一個(gè)值編程
1.定義一個(gè)Collection接口類型的變量,引用一個(gè)Set集合的實(shí)現(xiàn)類,實(shí)現(xiàn)添加單個(gè)元素,添加另一個(gè)集合,刪除元素,判斷集合中是否包含一個(gè)元素,判斷是否為空,清除集合,返回集合里元素的個(gè)數(shù)等常用操作
注:Set接口中沒(méi)有額外定義新的方法,使用的都是 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.添加單個(gè)元素coll1.add(123);coll1.add("九十九");coll1.add(12.56);//2.添加另一個(gè)集合Collection coll2 = new HashSet();coll2.add("coll2");coll2.add(false);coll1.addAll(coll2);//3.刪除元素coll1.remove(12.56);//4.判斷集合中是否包含一個(gè)元素coll1.contains(false);//5.判斷是否為空coll1.isEmpty();//6.清除集合coll1.clear();//7.返回集合里元素的個(gè)數(shù)coll1.size();} }2.創(chuàng)建Set接口的實(shí)現(xiàn)類,添加10個(gè)以上的元素,通過(guò)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("學(xué)而不思則罔");set.add("思而不學(xué)則殆");set.add("溫故而知新");set.add("可以為師矣");//使用Iterator 遍歷此集合Iterator iterator = set.iterator();//搭配hasNext()和next()方法while(iterator.hasNext()){System.out.println(iterator.next());}} } c 12.4 false 九十八 學(xué)而不思則罔 溫故而知新 可以為師矣 思而不學(xué)則殆 12 true3.創(chuàng)建Set接口的實(shí)現(xiàn)類,添加10個(gè)以上的元素,通過(guò)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("學(xué)而不思則罔");set.add("思而不學(xué)則殆");set.add("溫故而知新");set.add("可以為師矣");//使用foreach來(lái)遍歷集合//for(集合元素的類型 局部變量 : 集合對(duì)象){}for(Object i : set){System.out.println(i);}} } c 12.4 false 九十八 學(xué)而不思則罔 溫故而知新 可以為師矣 思而不學(xué)則殆 12 true4.創(chuàng)建Set接口的實(shí)現(xiàn)類,添加10個(gè)以上的元素,要求能夠排序
注:向 TreeSet 中添加的數(shù)據(jù),要求是相同類的對(duì)象
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() {//對(duì)字符串進(jìn)行排序 從大到小@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("輸入數(shù)據(jù)類型不匹配!");}}};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 需要復(fù)習(xí),一調(diào)用比較器就犯迷糊
5.定義一個(gè)Collection接口類型的變量,引用一個(gè)List集合的實(shí)現(xiàn)類,實(shí)現(xiàn)添加單個(gè)元素,添加另一個(gè)集合,刪除元素,判斷集合中是否包含一個(gè)元素,判斷是否為空,清除集合,返回集合里元素的個(gè)數(shù)等常用操作
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.添加單個(gè)元素 可重復(fù)list.add(123);list.add(456);list.add(false);list.add(456);//2.添加另一個(gè)集合ArrayList list1 = new ArrayList();list1.add(12.4);list1.add(34.6);list.add(list1);//將list1作為一個(gè)元素添加到list中list.addAll(list1);//將list1中的每個(gè)元素迭代添加到list中//3.刪除元素//3.1 按照元素刪除list.remove(false);//3.2按照索引刪除list.remove(2);//4.判斷集合中是否包含一個(gè)元素list.contains(true);//5.判斷是否為空list.isEmpty();//6.清除集合list.clear();//7.返回集合里元素的個(gè)數(shù)list.size();} }6.創(chuàng)建ArrayList實(shí)例化對(duì)象,添加10個(gè)以上的元素,在2號(hào)位插入一個(gè)元素,獲得5號(hào)位元素,刪除6號(hào)位元素,修改7號(hào)位的元素;
package com.atguigu.com;import java.util.ArrayList;public class exer6 {public static void main(String[] args) {ArrayList list = new ArrayList();//演示 采用for循環(huán)迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2號(hào)位插入一個(gè)元素 2號(hào)位默認(rèn)為索引list.add(2,"insert");//獲得5號(hào)位元素list.get(5);//刪除6號(hào)位元素 idea中可以顯示是索引還是元素值list.remove(6);//修改7號(hào)位的元素list.set(7,"new");} }7.通過(guò)四種方法遍歷上題中的集合
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循環(huán)迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2號(hào)位插入一個(gè)元素 2號(hào)位默認(rèn)為索引list.add(2,"insert");//獲得5號(hào)位元素list.get(5);//刪除6號(hào)位元素 idea中可以顯示是索引還是元素值list.remove(6);//修改7號(hào)位的元素list.set(7,"new");//使用iterator 進(jìn)行遍歷Iterator iterator = list.iterator();while(iterator.hasNext()){System.out.print(iterator.next() + " ");}System.out.println();//使用foreach 進(jìn)行遍歷for(Object obj:list){System.out.print(obj + " ");}System.out.println();//使用for進(jìn)行遍歷for(int i = 0; i < list.size();i++){System.out.print(list.get(i) + " ");}System.out.println();//使用Lambda表達(dá)式的forEach 之前沒(méi)用過(guò)這種結(jié)構(gòu)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 98.按要求實(shí)現(xiàn)下列問(wèn)題
 1)封裝一個(gè)新聞?lì)?#xff0c;包含標(biāo)題和內(nèi)容屬性,提供get、set方法,重寫toString方法,打印對(duì)象時(shí)只打印標(biāo)題;
2)只提供一個(gè)帶參數(shù)的構(gòu)造器,實(shí)例化對(duì)象時(shí),只初始化標(biāo)題;并且實(shí)例化兩個(gè)對(duì)象:
 新聞一:中國(guó)多地遭霧霾籠罩空氣質(zhì)量再成熱議話題
 新聞二:春節(jié)臨近北京“賣房熱”
3)將新聞對(duì)象添加到ArrayList集合中,并且使用ListIterator倒序遍歷;
4)在遍歷集合過(guò)程中,對(duì)新聞標(biāo)題進(jìn)行處理,超過(guò)15字的只保留前14個(gè),然后在后邊加“…”
5)在控制臺(tái)打印遍歷出經(jīng)過(guò)處理的新聞標(biāo)題;
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("中國(guó)多地遭霧霾籠罩空氣質(zhì)量再成熱議話題");News n2 = new News("春節(jié)臨近北京\"賣房熱\"");ArrayList list = new ArrayList();list.add(n1);list.add(n2);ListIterator iterator = list.listIterator();//指針位于開(kāi)頭while(iterator.hasNext()) {//不斷循環(huán) 將指針位于結(jié)尾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 定義一個(gè)Map接口類型的變量,引用一個(gè)實(shí)現(xiàn)類,添加鍵值對(duì),判斷集合中是否包含某一key值,通過(guò)某一key值得到value值,通過(guò)某一key刪除鍵值對(duì),把另一個(gè)map集合添加到此map集合,判斷是否為空,清除集合,返回集合里元素的個(gè)數(shù)等常用操作
package com.atguigu.com;import java.util.HashMap;public class exer9 {public static void main(String[] args) {HashMap map = new HashMap();//添加鍵值對(duì)map.put("AA",123);map.put(45,123);map.put("BB",56);//判斷集合中是否包含某一key值map.containsKey("CC");//通過(guò)某一key值得到value值map.get("AA");//通過(guò)某一key刪除鍵值對(duì)map.remove("BB");//把另一個(gè)map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判斷是否為空map.isEmpty();//清除集合map.clear();//返回集合里元素的個(gè)數(shù)map.size();} }10.通過(guò)兩種方法遍歷上題中的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();//添加鍵值對(duì)map.put("AA",123);map.put(45,123);map.put("BB",56);//判斷集合中是否包含某一key值map.containsKey("CC");//通過(guò)某一key值得到value值map.get("AA");//通過(guò)某一key刪除鍵值對(duì)map.remove("BB");//把另一個(gè)map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判斷是否為空map.isEmpty();//清除集合//map.clear();//返回集合里元素的個(gè)數(shù)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接口的實(shí)現(xiàn)類完成員工工資(姓名–工資)的摸擬:
1)添加幾條信息
 2)列出所有的員工姓名
 3列出所有員工姓名及其工資
 4)刪除名叫“Tom”的員工信息
 5)輸出Jack的工資,并將其工資加1000元(通過(guò)取值實(shí)現(xiàn))
 6)將所有工資低于1000元的員工的工資上漲20%(通過(guò)取值實(shí)現(xiàn))
參考文獻(xiàn)
鏈接: B站尚硅谷宋紅康Java.
總結(jié)
以上是生活随笔為你收集整理的JavaSE集合练习题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 如何用Mac线刷小米手机
- 下一篇: java 进度条时间设置_java进度条
