版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
思考與練習(xí)6.2List接口可以用哪些方式遍歷List實(shí)現(xiàn)類中的元素?答:普通for循環(huán),foreach循環(huán),使用迭代器Iterator。用戶電子郵箱有一個(gè)垃圾郵件過(guò)濾功能。當(dāng)檢測(cè)到疑似垃圾郵件的時(shí)候,就將其存儲(chǔ)起來(lái)。以備用戶查看、搜索(支持多種條件搜索)、移除、清空。有的時(shí)候垃圾郵件比較多,有的時(shí)候垃圾郵件比較少。請(qǐng)問(wèn)選擇什么樣的接口及其實(shí)現(xiàn)類更為合適?答:適合使用List接口的實(shí)現(xiàn)類。因?yàn)槠淇蓜?dòng)態(tài)擴(kuò)容,且支持contains、remove、clear等方法。6.3Set接口Set接口與List接口的主要區(qū)別是什么?Set接口有哪些常用的實(shí)現(xiàn)類?答:Set(元素存儲(chǔ)的無(wú)序性和唯一性)。TreeSet(基于紅黑樹(shù)實(shí)現(xiàn),確保元素處于排序狀態(tài)。注意:不是插入順序)與HashSet(基于哈希表實(shí)現(xiàn),可實(shí)現(xiàn)快速查找),LinkedHashSet維護(hù)了一個(gè)雙向鏈表來(lái)追蹤元素的順序,因此迭代時(shí)元素會(huì)按照它們被添加的順序返回?,F(xiàn)有集合A(1,3,5,7,9)、B(2,4,6,8,10)、C(1,4,6,7,11),查詢資料編寫(xiě)代碼求出A與B的并集,A與C的交集,A與C的差集答:Set<Integer>A=newHashSet<>(Set.of(1,3,5,7,9));Set<Integer>B=newHashSet<>(Set.of(2,4,6,8,10));Set<Integer>C=newHashSet<>(Set.of(1,4,6,7,11));//并集Set<Integer>unionAB=newHashSet<>(A);unionAB.addAll(B);System.out.println("A與B的并集:"+unionAB);//交集Set<Integer>intersectionAC=newHashSet<>(A);intersectionAC.retainAll(C);System.out.println("AandC的交集:"+intersectionAC);//差集Set<Integer>differenceAC=newHashSet<>(A);differenceAC.removeAll(C);System.out.println("A與C的差集:"+differenceAC);6.4隊(duì)列:Queue接口1.LinkedList實(shí)現(xiàn)了Queue接口,那么Queue集合是否可以作為雙端隊(duì)列使用,是否可以作為棧來(lái)使用?答:LinkedList實(shí)現(xiàn)了Queue接口與Deque,所以可以被作為雙端隊(duì)列使用。也可以被當(dāng)作棧使用。2.12306開(kāi)發(fā)了代客搶票功能。所有要搶某個(gè)車次的乘客被排到一個(gè)隊(duì)列中,當(dāng)該車次有余票時(shí),就從等待隊(duì)列的隊(duì)頭取出等待乘客幫其下單。請(qǐng)問(wèn)用什么接口及實(shí)現(xiàn)類?答:這是一個(gè)典型的使用先進(jìn)先出(FIFO)隊(duì)列的場(chǎng)景??梢允褂肣ueue接口,LinkedList實(shí)現(xiàn)類,如果要實(shí)現(xiàn)類似VIP客戶優(yōu)先的功能可以采用PriorityQueue。6.5映射:Map接口火車站只允許買票(根據(jù)刷身份證)的乘客進(jìn)入大廳。因?yàn)槿肆髁刻貏e大,因此需要查詢特別快。請(qǐng)問(wèn)使用什么接口及實(shí)現(xiàn)類?答:使用Map接口的HashMap類,身份證號(hào)作為key,個(gè)人信息作為value對(duì)一段英文文檔進(jìn)行詞頻統(tǒng)計(jì),并輸出頻率排名前10的單詞。答:將文檔中所有的標(biāo)點(diǎn)符號(hào)和特殊符號(hào)替換成空格,并將所有單詞變成小寫(xiě)形式,而后根據(jù)空格進(jìn)行分詞,得到所有單詞的集合。在對(duì)集合的元素進(jìn)行次數(shù)統(tǒng)計(jì),得到{單詞1=次數(shù)1,單詞2=次數(shù)2,單詞n=次數(shù)n}形式的HashMap對(duì)象,對(duì)HashMap對(duì)象中的元素,按值降序方式排序)importjava.util.*;publicclassOptimizedWordFrequencyCounter{publicstaticvoidmain(String[]args){Stringtext="YourinputEnglishdocumenthere.Thisisasampletextforwordfrequencycounting.Replacethiswithyouractualtext.";//把特殊字符轉(zhuǎn)換成空格text=text.replaceAll("[^a-zA-Z\\s]","").toLowerCase();//把文本分割成單詞String[]words=text.split("\\s+");//統(tǒng)計(jì)詞頻率Map<String,Integer>wordFrequency=newHashMap<>();for(Stringword:words){wordFrequency.put(word,wordFrequency.getOrDefault(word,0)+1);}//按頻率排序List<Map.Entry<String,Integer>>sortedList=newArrayList<>(wordFrequency.entrySet());sortedList.sort(Map.EparingByValue(Comparator.reverseOrder()));//輸出前10個(gè)單詞intcount=0;for(Map.Entry<String,Integer>entry:sortedList){if(count>=10){break;}System.out.println(entry.getKey()+":"+entry.getValue());count++;}}}6.8Java流式編程簡(jiǎn)介有List<Integer>numbers=Arrays.asList(5,12,3,8,15,9);,用Stream流式編程方法過(guò)濾和打印大于10的數(shù)字。numbers.stream()
.filter(num->num>10)
.forEach(System.out::println);有List<String>words=Arrays.asList("apple","banana","orange");,用Stream流式編程方法對(duì)字符串列表中的字符串轉(zhuǎn)換成大寫(xiě)后和收集為列表。List<String>upperCaseWords=words.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());有List<Integer>scores=Arrays.asList(80,95,75,90,85);,用Stream流式編程方法計(jì)算列表scores中元素的平均值。doubleaverage=scores.stream()
.mapToInt(Integer::intValue)
.average()
.orElse(0);習(xí)題一、判斷題(對(duì))泛型是Java集合框架得以實(shí)現(xiàn)的一個(gè)重要基礎(chǔ)(錯(cuò))List代表列表,使用newList<String>();將創(chuàng)建一個(gè)包含String類型元素列表。(對(duì))Collection接口中包含contains方法,所以List、Set接口也必然包含contains。(對(duì))ArrayList的contains方法需要調(diào)用集合中對(duì)象的equals方法來(lái)實(shí)現(xiàn)。(錯(cuò))ArrayList、LinkedList可以包含基本數(shù)據(jù)類型數(shù)據(jù)。(錯(cuò))Queue<Integer>q=newQueue<>();可以創(chuàng)建一個(gè)包含Integer類型的隊(duì)列。(錯(cuò))任何引用數(shù)據(jù)類型數(shù)據(jù)都可以直接放入ArrayList與TreeMap中,包括null。(對(duì))放入HashMap中的元素應(yīng)謹(jǐn)慎實(shí)現(xiàn)hashCode與equals方法。(對(duì))迭代器可用于在集合中刪除符合某個(gè)條件的元素。(錯(cuò))Set接口常用于對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)。(錯(cuò))Stream流式編程的filter方法只能接收實(shí)現(xiàn)Predicate接口的類的對(duì)象實(shí)例。二、選擇題下列代碼運(yùn)行時(shí)產(chǎn)生的異常是_____A_____。
publicvoidtestException(){
Listlist=newArrayList();
list.add("t");
list.add("a");
list.add("s");
list.add("k");
Collections.swap(list,0,9);
}A.IndexOutOfBoundsException B.IOExceptionC.ArithmeticException D.InterruptedExceptionCollection接口中,能夠把集合中全部元素以O(shè)bject數(shù)組形式返回的方式是_____A_____。A.toArray() B.toObject() C.contains() D.remove()3.下列選項(xiàng)中,實(shí)現(xiàn)了接口List的類是_____B_____。A.HashSet B.LinkedList C.TreeSet D.HashMap4.下面代碼執(zhí)行的結(jié)果是______C____。
Set<String>set=newTreeSet<String>();
list.add("3");
list.add("1");
list.add("2");
list.add("1");
for(Objects:set)
System.out.print(s+"");A.3121 B.321 C.123 D.11235.下列代碼段執(zhí)行后的結(jié)果是____A______。
HashSets=newHashSet();
s.add("abc");
s.add("abcd");
s.remove("abcd");
ints1=s.size();
s.add("abc");
s.add("abce");
ints2=s.size();
System.out.println(s1+""+s2);A.12 B.13 C.22 D.236.對(duì)于Map接口,判斷某個(gè)值是否存在的方法是_____A_____。A.containsValue() B.containsKey() C.contains() D.values()7.Collection接口中,判斷集合中是否有元素的方式是____C______。A.contains() B.add() C.isEmpty() D.remove()8.Collection接口中,進(jìn)行集合批量刪除的方法是_____C_____。A.containsAll() B.add() C.removeAll() D.addAll()9.可以使用<關(guān)鍵詞,值>對(duì)的形式保存數(shù)據(jù)對(duì)象是____A______。A.HashMap B.LinkedList C.HashSet D.ArrayList10.下列關(guān)于HashMap類的描述中,錯(cuò)誤的是____D______。A.HashMap使用<關(guān)鍵字,值>的鍵值對(duì)形式保存B.HashMap允許將null用作關(guān)鍵字C.HashMap允許將null用做值D.HashMap能夠保證其中元素的順序三、編程題編寫(xiě)泛型類Score<T>,在該泛型類中創(chuàng)建List集合并定義4個(gè)方法,分別是用來(lái)添加分?jǐn)?shù)的insertScore()方法、獲得最高分的getMaxScore()方法、獲得最低分的getMinScore()方法和獲得分?jǐn)?shù)的getScore()方法。現(xiàn)有5個(gè)裁判為選手打分:9.2、8.8、8.5、9.0和8.8,去掉最高分和最低分后,在滿分為10分的前提下,計(jì)算該選手的最后得分。importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;publicclassScores<TextendsNumber>{privateList<T>scores;publicScores(){scores=newArrayList<>();}//添加分?jǐn)?shù)publicvoidinsertScore(Tscore){scores.add(score);}//獲取最高分publicTgetMaxScore(){returnscores.isEmpty()?null:Collections.max(scores);}//獲取最低分publicTgetMinScore(){returnscores.isEmpty()?null:Collections.min(scores);}//獲取最終得分publicdoublegetScore(){if(scores.size()<3){//如果分?jǐn)?shù)不足3個(gè),無(wú)法去掉最高分和最低分return0.0;}//去掉最高分和最低分List<T>tempScores=newArrayList<>(scores);TmaxScore=getMaxScore();TminScore=getMinScore();tempScores.remove(maxScore);tempScores.remove(minScore);//計(jì)算平均分doublesum=0.0;for(Tscore:tempScores){sum+=score.doubleValue();}returnsum/tempScores.size();}publicstaticvoidmain(String[]args){Scores<Double>scoreCalculator=newScores<>();scoreCalculator.insertScore(9.2);scoreCalculator.insertScore(8.8);scoreCalculator.insertScore(8.5);scoreCalculator.insertScore(9.0);scoreCalculator.insertScore(8.8);doublefinalScore=scoreCalculator.getScore();System.out.printf("該選手的最終得分為:%.2f分\n",finalScore);}}分別使用數(shù)組和ArrayList存儲(chǔ)26個(gè)大寫(xiě)英文字母(存入過(guò)程用循環(huán)實(shí)現(xiàn)),并實(shí)現(xiàn)26個(gè)英文字母的正序(AZ)或反序(ZA)輸出。importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;
publicclassAlphabetStorage{
publicstaticvoidmain(String[]args){
//使用數(shù)組存儲(chǔ)26個(gè)大寫(xiě)英文字母
char[]alphabetArray=newchar[26];
for(inti=0;i<alphabetArray.length;i++){
alphabetArray[i]=(char)('A'+i);
}
//使用ArrayList存儲(chǔ)26個(gè)大寫(xiě)英文字母
List<Character>alphabetList=newArrayList<>();
for(inti=0;i<26;i++){
alphabetList.add((char)('A'+i));
}
//正序輸出數(shù)組中的字母
System.out.print("正序輸出數(shù)組中的字母:");
for(charc:alphabetArray){
System.out.print(c+"");
}
System.out.println();
//正序輸出ArrayList中的字母
System.out.print("正序輸出ArrayList中的字母:");
for(charc:alphabetList){
System.out.print(c+"");
}
System.out.println();
//反序輸出數(shù)組中的字母
System.out.print("反序輸出數(shù)組中的字母:");
for(inti=alphabetArray.length-1;i>=0;i--){
System.out.print(alphabetArray[i]+"");
}
System.out.println();
//反序輸出ArrayList中的字母
Collections.reverse(alphabetList);//使用Collections.reverse()方法反序
System.out.print("反序輸出ArrayList中的字母:");
for(charc:alphabetList){
System.out.print(c+"");
}
System.out.println();
}
}使用Map接口的實(shí)現(xiàn)類,存儲(chǔ)福建省、河北省兩個(gè)省份的城市列表。并可以根據(jù)輸入的省份名稱,輸出該省的主要城市。importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Scanner;
publicclassProvinceCityMap{
publicstaticvoidmain(String[]args){
//創(chuàng)建一個(gè)HashMap來(lái)存儲(chǔ)省份和城市列表的映射
Map<String,List<String>>provinceCityMap=newHashMap<>();
//存儲(chǔ)福建省的城市列表
List<String>fujianCities=newArrayList<>();
fujianCities.add("福州");
fujianCities.add("廈門");
fujianCities.add("泉州");
provinceCityMap.put("福建省",fujianCities);
//存儲(chǔ)河北省的城市列表
List<String>hebeiCities=newArrayList<>();
hebeiCities.add("石家莊");
hebeiCities.add("唐山");
hebeiCities.add("秦皇島");
provinceCityMap.put("河北省",hebeiCities);
//創(chuàng)建一個(gè)Scanner來(lái)讀取用戶輸入
Scannerscanner=newScanner(System.in);
System.out.print("請(qǐng)輸入一個(gè)省份名稱:");
StringprovinceName=scanner.nextLine();
//輸出該省的主要城市
List<String>cities=provinceCityMap.get(provinceName);
if(cities!=null){
System.out.println(provinceName+"的主要城市有:");
for(Stringcity:cities){
System.out.println(city);
}
}else{
System.out.println("省份名稱輸入錯(cuò)誤或該省份信息未錄入系統(tǒng)。");
}
//關(guān)閉Scanner
scanner.close();
}
}進(jìn)階:查找資料,根據(jù)本書(shū)所提供電子文檔中的“行政區(qū)劃數(shù)據(jù)庫(kù).csv”編寫(xiě)一個(gè)行政區(qū)劃查詢小程序,并分析時(shí)間復(fù)雜度。importcom.opencsv.CSVReaderHeaderAware;
importcom.opencsv.exceptions.CsvException;
importjava.io.FileReader;
importjava.io.IOException;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Scanner;
publicclassProviceCity{
publicstaticvoidmain(String[]args){
StringcsvFilePath="E:\\行政區(qū)劃數(shù)據(jù)庫(kù).csv";
Map<String,String[]>maps=newHashMap<>();
String[]regionName=new
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣管線安裝技術(shù)方法
- 初中信息技術(shù)安全
- 輸血科考試題及答案
- 神經(jīng)內(nèi)科出科考試及答案
- 什么是體驗(yàn)式試題及答案
- 認(rèn)證認(rèn)可條例試題及答案
- 河北省承德市承德縣2024-2025學(xué)年八年級(jí)上學(xué)期期末地理試題(解析版)
- 輔警面試培訓(xùn)課件
- 輔警入警培訓(xùn)課件
- 《GAT 841-2021基于離子遷移譜技術(shù)的痕量毒品炸藥探測(cè)儀通 用技術(shù)要求》專題研究報(bào)告深度
- 2026年孝昌縣供水有限公司公開(kāi)招聘正式員工備考題庫(kù)及1套參考答案詳解
- 2024-2025學(xué)年蘇教版四年級(jí)數(shù)學(xué)上冊(cè) 第二單元專練:經(jīng)濟(jì)問(wèn)題和促銷問(wèn)題(買幾送幾)原卷版+解析
- 6.2 中位數(shù)與箱線圖 教學(xué)設(shè)計(jì)(2課時(shí))2025-2026學(xué)年數(shù)學(xué)北師大版八年級(jí)上冊(cè)
- 2024年常州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案解析
- 2025年新興產(chǎn)業(yè)招商引資項(xiàng)目可行性研究報(bào)告
- 呼吸內(nèi)科主任談學(xué)科建設(shè)
- 券商投行部述職報(bào)告
- 2025年社區(qū)矯正法試題附答案
- 金風(fēng)-綠電新政下風(fēng)電資產(chǎn)產(chǎn)銷一體新范式
- 2026屆湖南長(zhǎng)沙一中高一生物第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- PDLC薄膜性能的研究
評(píng)論
0/150
提交評(píng)論