本文目錄一覽:
「java set」集合的值可以排序嗎?
Set集合的排序
我們知道,Set集合是無序的,
可以使用TreeSet類,那麼TreeSet進行排序的規則是怎樣的呢?
1 TreeSet支持兩種排序方式,自然排序和定製排序,在默認情況下,TreeSet採用自然排序.
自然排序:
TreeSet會調用集合元素的compareTo(Object obj)方法來比較元素之間的大小關係,然後將集合的元素按升序排列,這種方式就是自然排序.
為什麼集合元素有compareTo方法,因為集合元素對象實現了Comparable介面,該方法返回一個整數值,當一個對象調用該方法與另一個對象進行比較,例如:
obj1.compareTo(obj2)如果返回0,表示這兩個對象相等,如果該方法返回一個正整數,表示obj1大於obj2如果該方法返回一個負整數,表示obj1小於obj2
所以需要使用TreeSet集合進行自然排序,元素必須實現Comparable介面,但是Java一些常用的類已經實現了該介面,例如:String Character Boolean Date Time
BigDecimal BigInteger等
如:
TreeSetString ts = new TreeSetString();
ts.add(“b”);
ts.add(“c”);
ts.add(“a”);
System.out.println(ts);
結果:a b c
JAVA裡面set,map,list的區別是什麼?(盡量詳細)
java集合的主要分為三種類型:
Set(集)
List(列表)
Map(映射)
要深入理解集合首先要了解下我們熟悉的數組:
數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型),而JAVA集合可以存儲和操作數目不固定的一組數據。 所有的JAVA集合都位於 java.util包中! JAVA集合只能存放引用類型的的數據,不能存放基本數據類型。
簡單說下集合和數組的區別:(參考文章:《Thinking In Algorithm》03.數據結構之數組)
Java所有「存儲及隨機訪問一連串對象」的做法,array是最有效率的一種。
1、
效率高,但容量固定且無法動態改變。
array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量。
2、Java中有一個Arrays類,專門用來操作array。
arrays中擁有一組static函數,
equals():比較兩個array是否相等。array擁有相同元素個數,且所有對應元素兩兩相等。
fill():將值填入array中。
sort():用來對array進行排序。
binarySearch():在排好序的array中尋找元素。
System.arraycopy():array的複製。
若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。所以就要用到集合。
那我們開始討論java中的集合。
集合分類:
Collection:List、Set
Map:HashMap、HashTable
java中Set集合可以允許有多個空值嗎?
不可以 ,api上set定義:
一個不包含重複元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對
e1 和 e2,並且最多包含一個 null 元素。
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程[1] 。
Java具有簡單性、面向對象、分散式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫桌面應用程序、Web應用程序、分散式系統和嵌入式系統應用程序等[3] 。
另外,可以把Java API類庫中的Java SE API子集和Java虛擬機這兩部分統稱為JRE(JAVA Runtime Environment),JRE是支持Java程序運行的標準環境[14] 。
JRE是個運行環境,JDK是個開發環境。因此寫Java程序的時候需要JDK,而運行Java程序的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運行Java程序。但由於JDK包含了許多與運行無關的內容,佔用的空間較大,因此運行普通的Java程序無須安裝JDK,而只需要安裝JRE即可[15] 。
java集合set有哪些方法
set是一個介面,一般實現類用HashSet
方法摘要
boolean add(E e)
如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。
boolean addAll(Collection? extends E c)
如果 set 中沒有指定 collection 中的所有元素,則將其添加到此 set 中(可選操作)。
void clear()
移除此 set 中的所有元素(可選操作)。
boolean contains(Object o)
如果 set 包含指定的元素,則返回 true。
boolean containsAll(Collection? c)
如果此 set 包含指定 collection 的所有元素,則返回 true。
boolean equals(Object o)
比較指定對象與此 set 的相等性。
int hashCode()
返回 set 的哈希碼值。
boolean isEmpty()
如果 set 不包含元素,則返回 true。
IteratorE iterator()
返回在此 set 中的元素上進行迭代的迭代器。
boolean remove(Object o)
如果 set 中存在指定的元素,則將其移除(可選操作)。
boolean removeAll(Collection? c)
移除 set 中那些包含在指定 collection 中的元素(可選操作)。
boolean retainAll(Collection? c)
僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。
int size()
返回 set 中的元素數(其容量)。
Object[] toArray()
返回一個包含 set 中所有元素的數組。
T
T[] toArray(T[] a)
返回一個包含此 set
中所有元素的數組;返回數組的運行時類型是指定數組的類型。
原創文章,作者:MROB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139406.html