成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java Collections類操作集合詳解

瀏覽:4日期:2022-08-18 08:45:32

Collections 類是 Java 提供的一個操作 Set、List 和 Map 等集合的工具類。Collections 類提供了許多操作集合的靜態方法,借助這些靜態方法可以實現集合元素的排序、查找替換和復制等操作。下面介紹 Collections 類中操作集合的常用方法。

1) 排序(Sort) 使用sort方法可以根據元素的自然順序,對指定列表進行排序。列表中的所有元素都必須實現 Comparable 接口?;虼肆斜韮鹊乃性囟急仨毷鞘褂弥付ū容^器可相互比較的 Collections.sort(list , new Comparator(){ } );

2) 混排(Shuffling) 混排算法所做的正好與 sort 相反: 它打亂在一個 List 中可能有的任何排列的蹤跡。也就是說,基于隨機源的輸入重排該 List, 這樣的排列具有相同的可能性(假設隨機源是公正的)。這個算法在實現一個碰運氣的游戲中是非常有用的。例如,它可被用來混排代表一副牌的 Card 對象的一個 List 。另外,在生成測試案例時,它也是十分有用的。Collections.Shuffling(list)

3) 反轉(Reverse) 使用Reverse方法可以將元素進行反轉。Collections.reverse(list)

4) 替換所有的元素(Fill) 使用指定元素替換指定列表中的所有元素。Collections.fill(li,'aaa');

5) 拷貝(Copy) 用兩個參數,一個目標 List 和一個源 List, 將源的元素拷貝到目標,并覆蓋它的內容。目標 List 至少與源一樣長。如果它更長,則在目標 List 中的剩余元素不受影響。Collections.copy(list,li): 后面一個參數是目標列表 ,前一個是源列表

6) 返回Collections中最小元素(min) 根據指定比較器產生的順序,返回給定 collection 的最小元素。collection 中的所有元素都必須是通過指定比較器可相互比較的Collections.min(list)

7) 返回Collections中最大元素(max) 根據指定比較器產生的順序,返回給定 collection 的最大元素。collection 中的所有元素都必須是通過指定比較器可相互比較的Collections.max(list)

8) lastIndexOfSubList 返回指定源列表中最后一次出現指定目標列表的起始位置,int count = Collections.lastIndexOfSubList(list,li);

9) IndexOfSubList 返回指定源列表中第一次出現指定目標列表的起始位置,int count = Collections.indexOfSubList(list,li);

10) Rotate根據指定的距離循環移動指定列表中的元素,Collections.rotate(list,-1);如果是負數,則正向移動,正數則方向移動

排序(正向和逆向)

Collections 提供了如下方法用于對 List 集合元素進行排序。

void reverse(List list):對指定 List 集合元素進行逆向排序。 void shuffle(List list):對 List 集合元素進行隨機排序(shuffle 方法模擬了“洗牌”動作)。 void sort(List list):根據元素的自然順序對指定 List 集合的元素按升序進行排序。 void sort(List list, Comparator c):根據指定 Comparator 產生的順序對 List 集合元素進行排序。 void swap(List list, int i, int j):將指定 List 集合中的 i 處元素和 j 處元素進行交換。 void rotate(List list, int distance):當 distance 為正數時,將 list 集合的后 distance 個元素“整體”移到前面;當 distance 為負數時,將 list 集合的前 distance 個元素“整體”移到后面。該方法不會改變集合的長度。

下面程序簡單示范了利用 Collections 工具類來操作 List 集合。

例 1

編寫一個程序,對用戶輸入的 5 個商品價格進行排序后輸出。這里要求使用 Collections 類中 sort() 方法按從低到高的順序對其進行排序,最后將排序后的成績輸出。

具體實現代碼如下:

public class Test1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); List prices = new ArrayList(); for (int i = 0; i < 5; i++) { System.out.println('請輸入第 ' + (i + 1) + ' 個商品的價格:'); int p = input.nextInt(); prices.add(Integer.valueOf(p)); // 將錄入的價格保存到List集合中 } Collections.sort(prices); // 調用sort()方法對集合進行排序 System.out.println('價格從低到高的排列為:'); for (int i = 0; i < prices.size(); i++) { System.out.print(prices.get(i) + 't'); } }}

如上述代碼,循環錄入 5 個價格,并將每個價格都存儲到已定義好的 List 集合 prices 中,然后使用 Collections 類的 sort() 方法對該集合元素進行升序排序。最后使用 for 循環遍歷 users 集合,輸出該集合中的元素。

該程序的執行結果如下所示。請輸入第 1 個商品的價格:85請輸入第 2 個商品的價格:48請輸入第 3 個商品的價格:66請輸入第 4 個商品的價格:80請輸入第 5 個商品的價格:18價格從低到高的排列為:18 48 66 80 85

例 2

循環錄入 5 個商品的名稱,并按錄入時間的先后順序進行降序排序,即后錄入的先輸出。

下面編寫程序,使用 Collections 類的 reverse() 方法對保存到 List 集合中的 5 個商品名稱進行反轉排序,并輸出排序后的商品信息。具體的實現代碼如下:

public class Test2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); List students = new ArrayList(); System.out.println('******** 商品信息 ********'); for (int i = 0; i < 5; i++) { System.out.println('請輸入第 ' + (i + 1) + ' 個商品的名稱:'); String name = input.next(); students.add(name); // 將錄入的商品名稱存到List集合中 } Collections.reverse(students); // 調用reverse()方法對集合元素進行反轉排序 System.out.println('按錄入時間的先后順序進行降序排列為:'); for (int i = 0; i < 5; i++) { System.out.print(students.get(i) + 't'); } }}

如上述代碼,首先循環錄入 5 個商品的名稱,并將這些名稱保存到 List 集合中,然后調用 Collections 類中的 reverse() 方法對該集合元素進行反轉排序。最后使用 for 循環將排序后的集合元素輸出。

執行該程序,輸出結果如下所示。******** 商品信息 ********請輸入第 1 個商品的名稱:果粒橙請輸入第 2 個商品的名稱:冰紅茶請輸入第 3 個商品的名稱:礦泉水請輸入第 4 個商品的名稱:軟面包請輸入第 5 個商品的名稱:巧克力按錄入時間的先后順序進行降序排列為:巧克力 軟面包 礦泉水 冰紅茶 果粒橙

查找、替換操作

Collections 還提供了如下常用的用于查找、替換集合元素的方法。

int binarySearch(List list, Object key):使用二分搜索法搜索指定的 List 集合,以獲得指定對象在 List 集合中的索引。如果要使該方法可以正常工作,則必須保證 List 中的元素已經處于有序狀態。 Object max(Collection coll):根據元素的自然順序,返回給定集合中的最大元素。 Object max(Collection coll, Comparator comp):根據 Comparator 指定的順序,返回給定集合中的最大元素。 Object min(Collection coll):根據元素的自然順序,返回給定集合中的最小元素。 Object min(Collection coll, Comparator comp):根據 Comparator 指定的順序,返回給定集合中的最小元素。 void fill(List list, Object obj):使用指定元素 obj 替換指定 List 集合中的所有元素。 int frequency(Collection c, Object o):返回指定集合中指定元素的出現次數。 int indexOfSubList(List source, List target):返回子 List 對象在父 List 對象中第一次出現的位置索引;如果父 List 中沒有出現這樣的子 List,則返回 -1。 int lastIndexOfSubList(List source, List target):返回子 List 對象在父 List 對象中最后一次出現的位置索引;如果父 List 中沒有?縵終庋?淖 List,則返回 -1。 boolean replaceAll(List list, Object oldVal, Object newVal):使用一個新值 newVal 替換 List 對象的所有舊值 oldVal。

下面程序簡單示范了 Collections 工具類的用法。

例 3

編寫一個程序,要求用戶輸入 3 個商品名稱,然后使用 Collections 類中的 fill() 方法對商品信息進行重置操作,即將所有名稱都更改為“未填寫”。具體的實現代碼如下:

public class Test3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); List products = new ArrayList(); System.out.println('******** 商品信息 ********'); for (int i = 0; i < 3; i++) { System.out.println('請輸入第 ' + (i + 1) + ' 個商品的名稱:'); String name = input.next(); products.add(name); // 將用戶錄入的商品名稱保存到List集合中 } System.out.println('重置商品信息,將所有名稱都更改為’未填寫’'); Collections.fill(products, '未填寫'); System.out.println('重置后的商品信息為:'); for (int i = 0; i < products.size(); i++) { System.out.print(products.get(i) + 't'); } }}

如上述代碼,首先循環錄入 3 個商品名稱,并將這些商品信息存儲到 List 集合中,然后調用 Collections 類中的 fill() 方法將該集合中的所有元素值替換為“未填寫”。最后使用 for 循環將替換后的集合元素輸出。

運行該程序,執行結果如下所示。******** 商品信息 ********請輸入第 1 個商品的名稱:蘇打水請輸入第 2 個商品的名稱:礦泉水請輸入第 3 個商品的名稱:冰紅茶重置商品信息,將所有名稱都更改為’未填寫’重置后的商品信息為:未填寫 未填寫 未填寫

例 4

在一個集合中保存 4 個數據,分別輸出最大最小元素和指定數據在集合中出現的次數。

public class Test4 { public static void main(String[] args) { ArrayList nums = new ArrayList(); nums.add(2); nums.add(-5); nums.add(3); nums.add(0); System.out.println(nums); // 輸出:[2, -5, 3, 0] System.out.println(Collections.max(nums)); // 輸出最大元素,將輸出 3 System.out.println(Collections.min(nums)); // 輸出最小元素,將輸出-5 Collections.replaceAll(nums, 0, 1);// 將 nums中的 0 使用 1 來代替 System.out.println(nums); // 輸出:[2, -5, 3, 1] // 判斷-5在List集合中出現的次數,返回1 System.out.println(Collections.frequency(nums, -5)); Collections.sort(nums); // 對 nums集合排序 System.out.println(nums); // 輸出:[-5, 1, 2, 3] // 只有排序后的List集合才可用二分法查詢,輸出3 System.out.println(Collections.binarySearch(nums, 3)); }}

如上述代碼,向 List 集合中添加 4 個數據,然后調用 Collections 類中的 max() 和 min() 方法輸出集合中的最大最小元素,replaceAll() 替換元素,frequency() 判斷指定數據在 List 集合中出現的次數,最后用 binarySearch() 進行二分法查詢。

運行上述程序,執行結果如下:[2, -5, 3, 0]3-5[2, -5, 3, 1]1[-5, 1, 2, 3]3

復制

Collections 類的 copy() 靜態方法用于將指定集合中的所有元素復制到另一個集合中。執行 copy() 方法后,目標集合中每個已復制元素的索引將等同于源集合中該元素的索引。

copy() 方法的語法格式如下:

void copy(List <? super T> dest,List<? extends T> src)

其中,dest 表示目標集合對象,src 表示源集合對象。

注意:目標集合的長度至少和源集合的長度相同,如果目標集合的長度更長,則不影響目標集合中的其余元素。如果目標集合長度不夠而無法包含整個源集合元素,程序將拋出 IndexOutOfBoundsException 異常。

例 5

在一個集合中保存了 5 個商品名稱,現在要使用 Collections 類中的 copy() 方法將其中的 3 個替換掉。具體實現的代碼如下:

public class Test5 { public static void main(String[] args) { Scanner input = new Scanner(System.in); List srcList = new ArrayList(); List destList = new ArrayList(); destList.add('蘇打水'); destList.add('木糖醇'); destList.add('方便面'); destList.add('火腿腸'); destList.add('冰紅茶'); System.out.println('原有商品如下:'); for (int i = 0; i < destList.size(); i++) { System.out.println(destList.get(i)); } System.out.println('輸入替換的商品名稱:'); for (int i = 0; i < 3; i++) { System.out.println('第 ' + (i + 1) + ' 個商品:'); String name = input.next(); srcList.add(name); } // 調用copy()方法將當前商品信息復制到原有商品信息集合中 Collections.copy(destList, srcList); System.out.println('當前商品有:'); for (int i = 0; i < destList.size(); i++) { System.out.print(destList.get(i) + 't'); } }}

如上述代碼,首先創建了兩個 List 對象 srcList 和 destList,并向 destList 集合中添加了 5 個元素,向 srcList 集合中添加了 3 個元素,然后調用 Collections 類中 copy() 方法將 srcList 集合中的全部元素復制到 destList 集合中。由于 destList 集合中含有 5 個元素,故最后兩個元素不會被覆蓋。

運行該程序,具體的執行結果如下所示。原有商品如下:蘇打水木糖醇方便面火腿腸冰紅茶輸入替換的商品名稱:第 1 個商品:燕麥片第 2 個商品:八寶粥第 3 個商品:軟面包當前商品有:燕麥片 八寶粥 軟面包 火腿腸 冰紅茶

到此這篇關于Java Collections類操作集合詳解的文章就介紹到這了,更多相關Java Collections操作集合內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
丝袜美腿高跟呻吟高潮一区| 欧美成人伊人久久综合网| 欧美精品自拍偷拍动漫精品| 亚洲成a人v欧美综合天堂| 黄色av一区| 国产精品日韩精品欧美在线| 成人免费毛片aaaaa**| 在线播放日韩导航| 久草在线在线精品观看| 欧美亚洲一区二区在线观看| 免费人成网站在线观看欧美高清| 亚洲影院免费| 亚洲一区二区三区中文字幕在线| 国产精品一级| 一区二区三区欧美久久| 在线视频免费在线观看一区二区| 亚洲免费在线视频| 国产视频不卡| 亚洲午夜免费电影| 亚洲一区二区三区四区中文| 亚洲一区二区三区免费视频| 极品av少妇一区二区| 一区二区中文视频| 91久久精品www人人做人人爽| 国产精品乱子久久久久| 欧美特黄视频| 综合久久国产九一剧情麻豆| 精品1区2区3区4区| 亚洲欧美aⅴ...| 亚洲一区二区三区精品在线观看| 性久久久久久久久| 91久久精品日日躁夜夜躁欧美| 久久国产精品露脸对白| 日韩欧美国产午夜精品| 成人av在线播放网址| 国产校园另类小说区| 欧美在线免费一级片| 亚洲国产岛国毛片在线| 99精品福利视频| 免费观看91视频大全| 91麻豆精品国产| av高清久久久| 国产精品高潮呻吟| 亚洲欧美精品| 激情五月婷婷综合| 久久久综合网站| 精品不卡一区| 午夜激情久久久| 91精品国产全国免费观看| 99精品国产一区二区三区不卡| 国产精品家庭影院| 亚洲一区二区四区| 韩国一区二区三区| 久久精品人人做人人爽人人| 亚洲黄色在线| 日本成人在线电影网| 日韩精品中文字幕一区| 国产自产在线视频一区| 亚洲成人激情自拍| 在线观看91精品国产麻豆| 91丨porny丨国产| 一区二区三区加勒比av| 欧美性videosxxxxx| 粉嫩高潮美女一区二区三区| 欧美激情一区二区三区四区| 亚洲黄色成人久久久| 天堂午夜影视日韩欧美一区二区| 正在播放一区二区| 黄色亚洲精品| 麻豆成人免费电影| 国产欧美一区二区三区鸳鸯浴| 国产精品亚洲综合| 国产一区二区三区久久久| 国产亚洲欧美一级| 久久xxxx精品视频| av福利精品导航| 一个色综合av| 欧美大白屁股肥臀xxxxxx| 91久久午夜| 国产精品一区二区在线观看不卡| 专区另类欧美日韩| 欧美视频在线一区| 欧美成人dvd在线视频| 日韩av网站免费在线| 国产欧美一区在线| 欧美亚洲一区二区在线| 国产精品国产三级国产专区53| 美女网站在线免费欧美精品| 国产清纯美女被跳蛋高潮一区二区久久w| 久久精品成人| 成人午夜在线免费| 亚洲综合在线免费观看| 91精品国产欧美一区二区18| 一区二区三区你懂的| 成人综合在线网站| 亚洲妇女屁股眼交7| 日韩一级黄色片| 亚洲区国产区| 国产超碰在线一区| 亚洲成人黄色小说| 久久久久9999亚洲精品| 欧美亚洲免费高清在线观看| 成人av在线播放网址| 亚洲五码中文字幕| 久久久久国产精品麻豆ai换脸| 久久国产精品毛片| 欧美国产日本| 日韩美女精品在线| 制服丝袜亚洲播放| 国产精品日韩欧美一区| 91一区一区三区| 久久精品72免费观看| 亚洲日本成人在线观看| 2024国产精品| 91国偷自产一区二区三区成为亚洲经典 | 国产精品久久看| 日韩精品一区国产麻豆| 欧美电影免费观看高清完整版在| 欧美一区二区精品| 久久婷婷久久一区二区三区| 国产网红主播福利一区二区| 国产日韩亚洲欧美综合| 亚洲精品久久久蜜桃| 99久久夜色精品国产网站| 99久久久久久| 亚洲午夜精品国产| 久久久久久穴| 久久人人爽爽爽人久久久| 中文字幕一区二| 国产69精品久久久久毛片| 国产日产欧美精品一区二区三区| 亚洲人体偷拍| 欧美性三三影院| 久久久激情视频| 国产精一品亚洲二区在线视频| 一区二区三区久久久| 久久久精品中文字幕麻豆发布| 欧洲生活片亚洲生活在线观看| 亚洲麻豆av| 欧美色一级片| 成人激情免费视频| 麻豆精品蜜桃视频网站| 亚洲精品国产一区二区精华液 | 亚洲美女网站| heyzo一本久久综合| 国产美女在线观看一区| 天天综合色天天综合色h| 亚洲免费观看高清完整版在线观看熊| 国产香蕉久久精品综合网| 久久综合九色欧美综合狠狠| 7777精品伊人久久久大香线蕉| 91福利视频久久久久| 免费毛片一区二区三区久久久| 亚洲午夜伦理| 欧美精品啪啪| 91网站最新网址| a在线播放不卡| 国产·精品毛片| 国产一区在线观看视频| 天堂成人免费av电影一区| 亚洲国产日韩一区二区| 一区二区激情视频| 一区二区三区在线免费视频| 亚洲精品美国一| 亚洲青青青在线视频| 中文字幕制服丝袜成人av| 久久色在线观看| 久久久久国色av免费看影院| 久久一区二区三区国产精品| 精品国产免费一区二区三区四区 | 欧美精品丝袜中出| 欧美性生活一区| 欧美午夜片在线看| 欧美日韩视频专区在线播放| 欧美日韩国产一级| 91精品免费在线| 日韩一区二区视频| 欧美xxx久久| 精品国产一二三| 久久久蜜臀国产一区二区| 久久综合九色综合97婷婷| 久久久国产精品午夜一区ai换脸| 26uuu欧美| 国产日产精品一区| 久久久国产精品麻豆| 久久久99精品免费观看| 欧美国产激情一区二区三区蜜月 | 欧美伊人精品成人久久综合97| 久久久久国产精品一区二区 | 五月天国产精品| 午夜欧美视频在线观看| 日韩国产在线观看| 日本视频在线一区| 麻豆中文一区二区| 美女网站视频久久| 久久丁香综合五月国产三级网站| 国产精品1024久久| 成人18视频日本| 欧美日韩1080p| 亚洲国产婷婷|