Java集合工具類:Collections

Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類里 提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了對集合對象實現同步控制等方法。
一、 排序操作
如下示例:

public class CollectionsSort {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);		System.out.println(list);//reverse   反轉 指定列表中元素的順序。Collections.reverse(list);System.out.println("倒序:"+list);//shuffle   使用默認隨機源對指定列表進行置換。Collections.shuffle(list);System.out.println("隨機順序:"+list);//sort  根據元素的自然順序 對指定列表按升序進行排序。Collections.sort(list);System.out.println("自然順序排序:"+list);//自定義排序:Collections.sort(list,new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-01; //從大到小}});System.out.println("自定義排序:"+list);//swap  在指定列表的指定位置處交換元素。Collections.swap(list, 1, 5);System.out.println("交換元素:"+list);//rotate   根據指定的距離輪換指定列表中的元素。Collections.sort(list);System.out.println(list);Collections.rotate(list, 2);System.out.println("輪換1:"+list);Collections.rotate(list, -2);System.out.println("輪換2"+list);		}
}

執行結果如下:
在這里插入圖片描述
二、查找和替換操作

public class CollectionsSearch {public static void main(String[] args) {List<Integer> list = new ArrayList<>();	list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);list.add(8);list.add(9);list.add(8);list.add(8);list.add(8);	System.out.println(list);//使用二分搜索法搜索指定列表,以獲得指定對象。System.out.println("---二分搜索法---");System.out.println(Collections.binarySearch(list, 6));//max  minSystem.out.println("---max/min---");System.out.println(Collections.max(list));System.out.println(Collections.min(list));	//frequency  返回元素在列表中出現的次數System.out.println("---frequency---");System.out.println(Collections.frequency(list, 2));System.out.println("---列表---");System.out.println(list);//返回指定源列表中第一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println("—
indexOfSubList/lastIndexOfSubList---");List<Integer> list2 = new ArrayList<>();list2.add(7);list2.add(8);list2.add(9);//返回指定源列表中第一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println(Collections.indexOfSubList(list, list2));//返回指定源列表中最后一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。System.out.println(Collections.lastIndexOfSubList(list, list2));//replaceAll  使用另一個值替換列表中出現的所有某一指定值。System.out.println("---replaceAll---");Collections.replaceAll(list, 8, 10);System.out.println(list);//fill 使用指定元素替換指定列表中的所有元素。 填充所有System.out.println("---fill---");Collections.fill(list, 2);System.out.println(list);}
}

結果如下:
在這里插入圖片描述
查找和替換操作參考:
在這里插入圖片描述
三.同步控制

Collections類中提供了多個 synchronized…()方法,這些方法可以將指定集合包裝成線 程同步(線程安全)的集合,從而可以解決多線程并發訪問集合時的線程安全問題。 Java中常用的集合框架中的實現類 ArrayList、Linkedlist、 HashSet、TreeSet、 HashMap和TreeMap都是線程不安全的。如果有多個線程訪問它們,而且有超過一個 的線程試圖修改它們,則存在線程安全的問題。 Collections提供了多個類方法可以把 它們包裝成線程同步的集合。

public class SynchronizedDemo {public static void main(String[] args) {	List<String>list = Collections.synchronizedList(new ArrayList<String>());Set<String>set = Collections.synchronizedSet(new HashSet<String>());Map<Integer, String>map = Collections.synchronizedMap(new HashMap<Integer, String>());	}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443381.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java異常處理throws/throw

Java的異常被分為兩大類&#xff1a;Checked異常和Runtime異常&#xff08;運行時異常&#xff09;。 ? Runtime異常&#xff1a;所有的RuntimeException類及其子類的實例&#xff1b; ? Checked異常&#xff1a;不是RuntimeException類及其子類的異常實例。 只有Java語言提供…

JDBC 連接MYSQL數據庫

1. 加載驅動 Class.forName("com.mysql.jdbc.Driver");com.mysql.jdbc 包名 Driver 驅動名&#xff0c;驅動包需要引入進來 mysql com.mysql.jdbc.Driveroracle oracle.jdbc.driver.OracleDriversqlserver com.microsoft.sqlserver.jdbc.SQLServerDriver …

JSP 之輸出九九乘法表

JSP是一種建立在Servlet規范提供的功能之上的動態網頁技術&#xff0c;允許在網頁文件中嵌入java代碼和jsp標記。Java 服務器頁面 (Java Server Page &#xff0c;JSP) 擴展名為 .jsp。 1&#xff0e;jsp的執行過程 Jsp文件在用戶第一次請求時,會被編譯成Servlet,然后由這個Se…

Java 重寫與重載

方法的重寫&#xff1a; 重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。 重寫的好處在于子類可以根據需要&#xff0c;定義特定于自己的行為。 也就是說子類能夠根據需要實現父類的方法。 重寫方法不能拋出新的檢查異常或者比被重寫方法申…

Java新增

在實踐項目中我們有可能需要做到新增功能&#xff0c;新增一張表&#xff0c;或是新增多張表。這里我新增的是一張表。 這里主要描述DAO層與Servlet 層&#xff1a; DAO 層&#xff1a; public class UserDaoImpl implements UserDao {private Connection con null;private P…

JSP根據狀態動態改變數據表格按鈕

有時候在開發的過程中會遇到需要根據狀態ID 來動態改變數據表格的按鈕&#xff0c;下面我主要講述兩種表格根據ID改變按鈕的方式。 下面這種我是用EL 表達式獲取表格中的值&#xff1a; <table class"table table-striped table-bordered table-hover" id"s…

Java 模糊查詢

在學習Java 這門語言過程中&#xff0c;會遇到無數的知識點與錯誤&#xff0c;最重要的是我們能夠在茫茫的代碼中找到突破口&#xff0c;并用心去汲取精華。 在很多時候我們會用到模糊查詢&#xff0c;這里是我在編碼過程中用到的模糊查詢。 JSP &#xff1a; <input value…

Java刪除表

Java刪除表 這里頁面我用了layui 框架做刪除的&#xff0c;這里需要引入layui 的css 與js 插件&#xff0c;這里寫出主要的代碼。 Jsp &#xff1a; //監聽行工具事件table.on(tool(test), function(obj){var data obj.data; //獲得當前行數據var date1 data.classifyColum…

原始分頁

Jsp &#xff1a; <div style"float: right;">當前為${currentPage}頁&#xff0c;共有${totalRow}條數據&#xff0c;共${totalPage}頁 <select style"border-radius: 18px;" id"pageSize" name"pageSize" onchange"c…

根據銀行卡號判斷銀行卡是否正確與歸屬銀行

校驗過程&#xff1a; 1.從卡號的最后一位數字開始&#xff0c;逆向將奇數位&#xff08;1&#xff0c;3&#xff0c;5 等等相加&#xff09; 2.從卡號最后一位數字開始&#xff0c;逆向將偶數位數字&#xff0c;先乘以2&#xff0c;如果乘積為兩位數&#xff0c;將個位數字相加…

根據年月日判斷第多少天,星期幾

1. 根據年月日判斷第多少天 Scanner是SDK1.5新增的一個類,可使用該類創建一個對象。 Scanner scannernew Scanner(System.in);  然后scanner對象調用下列方法&#xff08;函數&#xff09;,讀取用戶在命令行輸入的各種數據類型   next.Byte(),nextDouble(),nextFloat,nextIn…

解決MySQLyog 導入數據庫文件沒有反應

之前我在MySQL 中新建了一個數據庫&#xff0c;名為“onlineclassroom” 的數據庫&#xff0c;但是在將外部的.sql 文件導入進來之后發現&#xff0c;數據庫沒有反應&#xff0c;也看不到表數據&#xff0c;以為是沒有刷新問題&#xff0c;但是刷新之后發現還是沒有這個就很奇怪…

解決myeclipse報錯500,MySQLyog報錯誤碼問題

在myeclipse 寫了一個登錄&#xff0c;但在我登錄的時候卻報了500的空指針&#xff0c;我檢查了自己的登錄代碼&#xff0c;發現沒有問題&#xff0c;這不應該啊&#xff0c;然后在網上也尋找了一些解決方案&#xff0c;發現好像并不適用&#xff0c;500空指針如下&#xff1a;…

Java防止用戶同一時間重復登錄(包括異地登錄)

有時候我們在做登錄模塊過程中難免會遇到這種問題&#xff0c;即使我們給用戶進行了多重判斷&#xff0c;比如&#xff1a;用戶名&#xff0c;管理員&#xff0c;驗證碼&#xff0c;一系列的判斷… 你是否真正考慮到用戶的體驗&#xff0c;比如不能讓用戶在同一時間&#xff0c…

jquery點擊彈出播放視頻并顯示遮罩層

最近在做視頻播放的時候&#xff0c;發現用jquery的播放視頻可以很好的實現我所需要的效果。在之前請把插件引用進來&#xff0c;廢話不多說&#xff0c;代碼如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta …

JS實現圖片循環滾動

之前在前端的時候有遇到這樣一個問題&#xff0c;實現 JS 圖片的循環滾動&#xff0c;然后鼠標移入的時候停止滾動&#xff0c;鼠標移開繼續滾動&#xff0c;這里無非就是設置了一個定時器&#xff0c;鼠標移上時清除定時器達到滾動停止的目的&#xff0c;鼠標移開時重設定時器…

有趣的滾動條

今天在搭前端頁面的時候&#xff0c;UI給過來的一個自定義的滾動條&#xff0c;要求必須與設計的一樣&#xff0c;覺得有點有趣&#xff0c;現在記錄一下。 效果圖&#xff1a; 具體代碼是這樣的&#xff1a; /*字體太長&#xff0c;這里我就減少一些*/ <div class"l…

查詢分頁的幾種sql語句

sql server 中的分頁查詢sql語句不跟mysql 一樣&#xff0c;mysql 用 limit 可以實現查詢sql分頁。如&#xff1a; select * from news where id>(select id from news limit 250000,1) limit 10; //相對執行效率高 select * from news limit 250000,10;mysql 中 limit總是…

c#解決在數據表格中無法顯示秒數問題

在查詢日期的時候&#xff08;年月日時分秒&#xff09;&#xff0c;發現丟失了秒&#xff0c;在這里我用的是自己 封裝的Vo類里面的時間轉換&#xff0c;沒有把秒數查詢出來&#xff0c;在Vo動不了手&#xff0c;我還不能對Controller 動手了&#xff1f; 查詢&#xff1a; 更…

解決 idea 復制jsp 文件過來頁面報404

今天在做功能的時候把另外一個jsp文件復制過來&#xff0c;發現頁面一直報404&#xff0c;咋搞的&#xff0c;檢查路徑沒有問題&#xff0c;報404這個就奇葩了&#xff0c;后面經過一番“洗腦”&#xff0c;才發現jsp文件復制過來少了一個特別重要的步驟&#xff0c;那就是重新…