java -- Set 用法及特點
Hashset 和 ListHashSet用法及特點
// HashSet 和 LinkedHashSet 用法及特點 /** * 編寫一個ArrayList集合 用Set去重 * 為了保證順序 我們用LinkedHashSet */ public static void fun6() { ArrayList<String> aList = new ArrayList<>(); aList.add("b"); aList.add("a"); aList.add("a"); aList.add("b"); aList.add("c"); aList.add("c"); LinkedHashSet<String> hSet = new LinkedHashSet<>(); hSet.addAll(aList); aList.clear(); aList.addAll(hSet); System.out.println(aList); } /** * 編寫一個 從鍵盤鍵入一連串字串,將重複的字串去掉,打印出不通過的字元 */ public static void fun5() { System.out.println("請輸入一連串字元: "); Scanner scanner = new Scanner(System.in); String s1 = scanner.nextLine(); char[] charArray = s1.toCharArray(); HashSet<Character> hSet = new HashSet<>(); for (int i = 0; i < charArray.length; i++) { hSet.add(charArray[i]); } System.out.println(hSet); } /** * 編寫一個 隨機/不重複的 10個數的程式 * Set集合實現不重複 */ public static void fun4() { HashSet<Integer> hSet = new HashSet<>(); while (hSet.size() < 10) { int i1 = (int)(Math.random() * (20 - 1 + 1) - 1); hSet.add(i1); } System.out.println(hSet); } /** * LinkedHashSet 特點: 有序的(怎麼存的可以怎麼取出來) * 底層實現是連結串列實現 * 同樣具有Set的去重的特點 */ public static void fun3() { LinkedHashSet<String> lSet = new LinkedHashSet<>(); lSet.add("c"); lSet.add("a"); lSet.add("a"); lSet.add("c"); lSet.add("b"); lSet.add("b"); lSet.add("d"); lSet.add("d"); for (String string : lSet) { System.out.println(string); } } /** * 去除物件 --- 需要重寫HashCode() 和 equals() */ public static void fun2() { HashSet<Person> hSet = new HashSet<>(); hSet.add(new Person("科比" , 18)); hSet.add(new Person("加索爾" , 19)); hSet.add(new Person("費舍爾" , 20)); hSet.add(new Person("拜納姆" , 21)); hSet.add(new Person("奧多姆" , 22)); hSet.add(new Person("奧多姆" , 22)); hSet.add(new Person("科比" , 18)); hSet.add(new Person("加索爾" , 19)); hSet.add(new Person("費舍爾" , 20)); hSet.add(new Person("拜納姆" , 21)); for (Person personCopy : hSet) { System.out.println(personCopy); } } /** * Set介面特點: 無下標 無順序 **無重複** */ public static void fun1() { HashSet<String> hSet = new HashSet<>(); hSet.add("c"); hSet.add("a"); hSet.add("a"); hSet.add("c"); hSet.add("b"); hSet.add("b"); hSet.add("d"); hSet.add("d"); for (String string : hSet) { System.out.println(string); } }
TreeSet用法及特點
// 計數器 /** * 鍵盤錄入5個學生資訊(姓名,語文成績,數學成績,英語成績) * 按照總分從高到低輸出到控制檯。 */ public static void fun13() { System.out.println("請輸入姓名及成績:"); Scanner scanner = new Scanner(System.in); TreeSet<Clases1> tSet = new TreeSet<>(); while(tSet.size() < 5) { String s1 = scanner.nextLine(); String[] split = s1.split(","); int parseInt = Integer.parseInt(split[1]); int parseInt2 = Integer.parseInt(split[2]); int parseInt3 = Integer.parseInt(split[3]); int num = parseInt + parseInt2 + parseInt3; tSet.add(new Clases1(split[0], parseInt, parseInt2, parseInt3, num)); } System.out.print(tSet); } /** * 程式啟動後, 可以從鍵盤輸入接收多個整數, 直到輸入quit時結束輸入. * 把所有輸入的整數倒序排列列印. */ public static void fun12() { System.out.println("請輸入一個字串"); Scanner scanner = new Scanner(System.in); TreeSet<Integer> tSet = new TreeSet<>(new Compara3()); while(true) { String s1 = scanner.nextLine(); if (s1.equals("quit")) { break; } int parseInt = Integer.parseInt(s1); tSet.add(parseInt); } System.out.println(tSet); } /** * 鍵盤接受一個字串 程式對其中所有字元進行排序 */ public static void fun11() { System.out.println("請輸入一串字串: "); Scanner scanner = new Scanner(System.in); String s1 = scanner.nextLine(); char[] charArray = s1.toCharArray(); TreeSet<Character> tSet = new TreeSet<>(new Compara2()); for (int i = 0; i < charArray.length; i++) { tSet.add(charArray[i]); } System.out.println(tSet); } /** * ArrayList儲存無序並且重複的字串, 要求排序 並且不能去除重複 */ public static void fun10() { ArrayList<String> aList = new ArrayList<>(); aList.add("aaa"); aList.add("asd"); aList.add("ww"); aList.add("zz"); aList.add("CC"); aList.add("a"); aList.add("bcd"); aList.add("aaa"); TreeSet<String> tSet = new TreeSet<>(new compara1()); tSet.addAll(aList); aList.clear(); aList.addAll(tSet); System.out.println(aList); } /** * 使用比較器 比較排序集合中的元素. 要求保留重複 * 重寫比較器comparator<T>介面 實現自己想要的比較方法 * 注意:要記著將comparator的實現類要建立在 集合中 */ public static void fun9() { TreeSet<String> tSet = new TreeSet<>(new compara1()); tSet.add("aaa"); tSet.add("asd"); tSet.add("ww"); tSet.add("zz"); tSet.add("CC"); tSet.add("a"); tSet.add("bcd"); tSet.add("aaa"); System.out.println(tSet); } /** * TreeSet儲存類物件,進行排序 要在建立物件的類中重寫compareTo方法 * TreeSet儲存的是類物件, 就要看compareTo的返回值 * 返回0 只是一個值 * 返回正數 按存進順序 正序 * 返回負數 按存進順序 倒序 * * TreeSet 內部使用 二叉樹來儲存的 * 核心: * 比我小的數存在左邊(返回負數時) * 比我大的數存在右邊(返回正數時) * 不儲存, 兩個數相等(返回0時) * */ public static void fun8() { TreeSet<Man> tSet = new TreeSet<>(); tSet.add(new Man("科比", 19)); tSet.add(new Man("喬丹", 20)); tSet.add(new Man("庫裡", 21)); tSet.add(new Man("格林", 18)); tSet.add(new Man("書豪", 19)); tSet.add(new Man("書豪", 200)); System.out.println(tSet); } /** * TreeSet的特點: **排序**(去重) */ public static void fun7() { TreeSet<Integer> tSet = new TreeSet<>(); tSet.add(5); tSet.add(4); tSet.add(1); tSet.add(2); tSet.add(3); tSet.add(5); tSet.add(5); for (Integer integer : tSet) { System.out.println(integer); } }
總結:
Set中的元素是不能重複的,如果使用add(Object obj)方法新增已經存在的物件,則會覆蓋前面的物件
為什麼要使用集合類
當你事先不知道要存放資料的個數,或者你需要一種比陣列下標存取機制更靈活的方法時,你就需要用到集合類。
相關推薦
java -- Set 用法及特點
Hashset 和 ListHashSet用法及特點 // HashSet 和 LinkedHashSet 用法及特點 /** * 編寫一個ArrayList集合 用Set去重 * 為了保證順序 我們用LinkedHashSet */ publ
【Java學習筆記之二十二】解析接口在Java繼承中的用法及實例分析
ani 復制代碼 ads compute 現在 target body 常量 實現接口 一、定義 Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具
list,map,set集合的基本用法及差異
nbsp htable body 根據 pos null clas 速度 就是 List:1.可以允許重復的對象。 2.可以插入多個null元素。 3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。 4.常用的實
set uid ,set gid ,sticky bit用法及區別
三種權限suid:以屬主的身份去執行命令任何命令、程序在執行期間都具有身份[user2@room9pc01 ~]$ ls /root #失敗[root@room9pc01 ~]# chmod u+s /usr/bin/ls [user2@room9pc01 ~]$ touch u1.txt #to
Java中compareTo用法及原始碼解析
最近遇到一個問題,在日期比較的時候,很麻煩,因為日期比較沒有大於等於,只有大於或者小於,這就導致在比較時間的時候特別麻煩,而且還要由string轉成date格式才能比較,下面是我使用compareTo比較時間字串的程式碼: String putStartTime = Date
java多執行緒、FutureTask的用法及兩種常用的使用場景
Java多執行緒實現的方式有四種 1.繼承Thread類,重寫run方法 2.實現Runnable介面,重寫run方法,實現Runnable介面的實現類的例項物件作為Thread建構函式的target 3.通過Callable和FutureTask建立執行緒 4.通過執行緒池
Java-API-Class類詳解、用法及泛化
Java-API-Class類詳解、用法及泛化 轉載宣告: 本文系轉載自以下文章: Java中Class類詳解、用法及泛化 作者: 老白講網際網路 轉載僅為方便學習檢視,一切權利屬於原作者,本人只是做了整理和排版,如果帶來不便請聯絡我刪除。 0x01 摘要
Java——Set集合(介面)(二)___TreeSet用法
Set(介面)集合: TreeSet類(底層是二叉樹),能保證有序,用來對元素進行排序,能保證元素的唯一 使用方式: 1.自然順序:TreeSet類的add()方法中會把存入的物件提升為Comparable型別
Java Set集合詳解及Set與List的區別
Java中的Set集合是繼承Collection的介面,是一個不包含重複元素的集合。 下圖是Set集合的原始碼。 Set和List都是以介面都形式來進行宣告。Set主要包含三種存放資料型別都變數,分別是HashSet,LinkedHashSet,TreeSet
Redis 高階 Java 客戶端 Lettuce 的用法及踩坑經驗
如果你在網上搜索 Redis 的 Java 客戶端,你會發現,大多數文獻介紹的都是 Jedis,不可否認,Jedis 是一個優秀的基於 Java 語言的 Redis 客戶端,但是,其不足也很明顯:Jedis 在實現上是直接連線 Redis-Server,在多個執行緒間共享一個
java sort用法(陣列排序及集合排序) Java排序方法sort的使用詳解 Java排序方法sort的使用詳解
Java排序方法sort的使用詳解 對陣列的排序: 1 2
Java產生隨機數用法及基本用法(轉)
1.隨機產生四位數[1000,9999] num=(int)(Math.random()*9000)+1000; Math.random()方法是產生double型[0,1)的資料,[0,1)*9000=[1,9001),用int型別強轉後便是[0,8999], 因而可以得到1000~9
java 陣列的定義格式及特點
class FunctionDemo { /* 陣列的定義 1、同一種資料型別的集合,其實陣列就是一個容器 2、可以自動給陣列中的元素從0開始自動編號,方便操作這些元素 3、陣列格式: 資料型別[] 陣列名 = new 元素型別[元
Java中split()函式的用法及一些注意細節
String.split("要切割的準側")返回的是一個String[ ]的首地址;String.split("要切割的準側").length 返回的是這個String被切割後的子字串的個數(及被切割成了幾個段);String.split(""),此時,切割後的第一個段是空
JAVA關鍵字Static作用 特點 利弊及建立時機 成員變數和靜態變數 Static修飾成員 修飾方法 修飾塊(靜態快)
(1)Static關鍵字修飾符 可以修飾成員(成員屬性 成員方法)(2)Static修飾成員的特點a 生命週期長 跟類相同b 用Static修飾的變數 所有物件共享c Static修飾變數 可以通過物件(.)點的形式呼叫 還可以通過類名(.)點方法呼叫(3)Static建立時
list set map的特點及區別
List,Set,Map是否繼承自Collection介面? 答:List,Set是,Map不是。 Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素。一些Collection允許相同的元素而另一些不行。一些能
Java_基礎Set集合概述及特點
Collection List 有序,可重複. Set 無序,唯一. HashSet: 底層為HashMap。 步驟: 先看hashCode()值是否相同
Java中foreach用法及常用集合操作
foreach語句是java5的新特徵之一,在遍歷陣列、集合方面,foreach為開發人員提供了極大的方便。 foreach語句是for語句的特殊簡化版本,但是foreach語句並不能完全取代for語句,然而,任何的foreach語句都可以改寫為for語句版本。 for
Java的synchronized用法及死鎖
《程式設計思想之多執行緒與多程序(1)——以作業系統的角度述說執行緒與程序》一文詳細講述了執行緒、程序的關係及在作業系統中的表現,這是多執行緒學習必須瞭解的基礎。本文將接著講一下Java執行緒同步中的一個重要的概念synchronized. synchronized是J
Java關鍵字解釋及用法
轉載自百度文庫 abstract - 1 - boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double -