A. C++ 的 set 集合應該怎麼用,求簡單的初始化,添加值,和遍歷!!!
#include <iostream>
#include <set>
using namespace std;
void main()
{
set<int> s1; //空set集合
set<int>::iterator it;
int a[]= {1,2,3,4,5};
set<int> s2 (a,a+5); //利用指針對象初始化set集合
s2.insert(0); //插入方法1
s2.insert(s2.begin(),7); //插入方法2
int b[] ={10,11,12,13,14,15};
s2.insert(b,b+3); //插入方法3
cout<<"集合s2中的元素:"<<endl;
for(it=s2.begin();it!=s2.end();it++) //遍歷
cout<<" "<<*it<<endl;
system("pause");
}
B. 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等
如:
TreeSet<String> ts = new TreeSet<String>();
ts.add("b");
ts.add("c");
ts.add("a");
System.out.println(ts);
結果:a b c
C. java裡面的集合框架的set用法應該怎麼做
1、Set:它是無序、不重復、該介面中的方法和Collection介面中的方法一致。
繼承它的子類有HashSet和TreeSet。
HashSet:底層是哈希表數據結構,不同步的它保證元素的唯一性的方式。
根據元素的兩個方法來完成的,一個是HashCode、一個是equals方法,只有當hashCode方法算出哈希值相同時,會再次判斷兩個元素的equals方法是否為true,如果是true說明兩個元素相同,不存儲,所以往hashSet集合中存儲自定義對象時,要覆蓋hashCode,equals方法,通過自定義對象具備的特有數據定義hashCode、equals的具體實現。
treeSet:用於給集合中的額元素按照指定的順序進行排序,底層是二叉樹結構,線程是不同步的。
它保證元素的唯一性,就是通過元素對象的比較方法返回值來確定的,如果為0,則視為兩個元素時相同的元素,不存儲。
treeset的兩種排序方式:
1、讓元素自身具備比較功能,就是強制讓元素類去實現comparable介面,覆蓋compareTo方法,這時元素具備的自然排序,可是如果元素自身不具備比較功能,獲取具備的比較功能不是所需要的,這時排序方式就不能用了。
2、讓集合自身具備比較功能,需要定義比較器,其實就實現了comparetor介面的子類對象作為參數傳遞給treeSet集合的構造函數,讓treeSet集合一創建就具備了比較功能,該子類必須要覆蓋compare方法。
D. java 中set 值得方式比較
沒有那種更好。這個得看實際業務需要。
如果實際業務不允許null值,所有null都要轉為「」,那麼可以使用前者。
實際開發中後者使用的更多。也更靈活,可以傳null,遇到不能為null的也可以自己處理
obj.setOrderId(orderId == null ? "" : orderId);
所以沒有絕對的好壞之分,看情況,看習慣。
E. 怎樣從java集合類set中取出數據
創建set的iterator方法:
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判斷是否有下一個
it.next()取出元素。
以上方法便是從Set集合中取出數據。
(5)set集合常用方法擴展閱讀:
Java中使用Set介面描述一個集合(集合不允許有「重復值」,注意重復的概念),集合Set是Collection的子介面,Set不允許其數據元素重復出現,也就是說在Set中每一個數據元素都是唯一的。Set介面定義的常用方法如下:
1、size() 獲取Set尺寸(即Set包含數據元素的總數)。
2、 add(Object obj) 向Set中添加數據元素obj。
3、remove(Object obj) 從Set中移除數據元素obj。
4 、contains(Object obj) 判斷當前Set中是否包含數據元素obj,如果包含返回true,否則返回false。
5、iterator() 將Set裝入迭代器。
F. Java中Set、List、Map集合類(介面)的特點及區別。分別有哪些常用實現類。
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變;
List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變;
Map:適合儲存鍵值對的數據。
G. set集合和list集合的區別
set集合中的數據沒有順序,且如果add兩個一樣的對象或基本類型的數據,set集合里也是只有一個,即set集合中的數據都是獨一無二的;不能使用加強的for循環;list中的數據是有順序的,可以加入多個一樣的對象和基本類型的數據,可使用加強的for循環;
H. java集合的通用方法有哪些
map集合,對象以鍵值對的形式存放在集合中,並且鍵它是不允許重復的。常用的實現是HashMap和TreeMap,HashMap能夠快速的查詢到一個鍵,而TreeMap則是對鍵按序存放的。
list介面是對collection的擴充,它允許存放相同的元素。常用的有2種實現類,ArrayList和LinkedList。ArraryList是一種以數組形式存放元素的集合,更適合於做查詢,而LinkedList內部實現鏈表,適合做增刪元素操作。
set介面同樣是對collection的擴充,它不允許存放相同的元素。常用類HashSet和TreeSet.HashSet主要能夠快速定位到一個元素,需要用到HashCode()方法,而TreeSet類中可以實現對元素的排序。
I. java中set<string>類型的東西是什麼如何將一個string類型的字元串增加到裡面
Set是集合的意思,是同種對象的集合,<String>說明這種對象都是String類型的對象。
可以這樣:
Set<String> set = new HashSet<String>();
Strings1= "hello";
String s2 = "world";
set.add(s1);
set.add(s2);
這樣就添加了兩個元素。
Java中String類學習總結
一、String是不可變對象
java.lang.String類使用了final修飾,不能被繼承。Java程序中的所有字面值,即雙引號括起的字元串,如"abc",都是作為String類的實例實現的。String是常量,其對象一旦構造就不能再被改變。
例:
public class Immutable {
public static String upcase(String s) {
return s.toUpperCase();
}
public static void main(String[ ] args) {
String str1= "Hello World";
System.out.println(str1); //Hello World
String str2 = upcase(str1);
System.out.println(str2); //HELLO WORLD
System.out.println(str1); //Hello World
}
}
二、String常量池
常量池(constant pool)指的是在編譯期被確定,並被保存在已編譯的.class文件中的一些數據。Java為了提高性能,靜態字元串在常量池中創建,並盡量使用同一個對象,重用靜態字元串。對於重復出現的字元串直接量,JVM會首先在常量池中查找,如果常量池中存在即返回該對象。
例:
public class test1 {
public static void main(String[] args){
String str1 = "Hello";
//不會創建新的String對象,而是使用常量池中已有的"Hello",
String str2 = "Hello";
System.out.println(str1 == str2); //true
//使用new關鍵字會創建新的String對象
String str3 = new String("Hello");
System.out.println(str1 == str3); //false
}
}
J. java set 順序
在java語言中,提供多種不同的結構來組織對象,Set(集合)是其中的一種,本身是一個介面,其迭代時的順序取決於其具體實現。典型的實現包括:
HashSet:哈希表是通過使用稱為散列法的機制來存儲信息的,元素並沒有以某種特定順序來存放;
LinkedHashSet:以元素插入的順序來維護集合的鏈接表,允許以插入的順序在集合中迭代;
TreeSet:提供一個使用樹結構存儲Set介面的實現,對象以升序順序存儲,訪問和遍歷的時間很快。
(10)set集合常用方法擴展閱讀
Set<String> set = new TreeSet<String>();
set.add("f");
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
System.out.println(set);