當前位置:首頁 » 編程語言 » set遍歷java

set遍歷java

發布時間: 2022-07-17 13:13:52

java中Set集合怎樣用for遍歷


//集合,基本都用iterator遍歷。
//假設有個treeSet
TreeSetts=newTreeSet();
ts.add("dd");
Iteratorit=ts.iterator();
while(it.hasNext()){
System.out.print(it.next());
}

㈡ java中HashSet怎樣遍歷取出裡面的值給個例子~~

HashSet<String> set=new HashSet<String>();
set.add("1");
set.add("2");
set.add("3");
Iterator<String> iterator=set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
控制台輸出:
3
2
1
對於集合這塊的類都可以這樣寫的,比如你把第一行換成:
ArrayList<String> set=new ArrayList<String>();
後面的程序不動,一樣可以遍歷輸出的。
不太懂的話可以網路Iterator的用法和原理

㈢ java iterator循環遍歷集合(比如HashSet)的原理

Iterator<String> it = set.iterator() 這時得到一個迭代器,它的指針位於第一個元素之前。
然後我們不停地 hasNext() 再 next 得到值,當hasNext 為 false 時當然就不能去 next 了。

這背後的位置索引是在迭代器內部記錄著的,我們不能直接改它的值,只能 next 去下一個。
不過像 ListIterator 則是雙向的,可以 previous。遞增遞減都是由 next / previous 方法來操作的。

㈣ JAVA Set Iterator遍歷的順序是怎麼樣的

HashMap散列圖、Hashtable散列表是按「有利於隨機查找的散列(hash)的順序」。並非按輸入順序。
遍歷時只能全部輸出,而沒有順序。
甚至可以rehash()重新散列,來獲得更利於隨機存取的內部順序。

總之,遍歷HashMap或Hashtable時不要求順序輸出,即與順序無關。

如果需要順序,請使用List的子類,都是有序的。

㈤ java 關於set集合遍歷的問題。我列印不出學生信息怎麼辦

set集合遍歷列印不出學生信息,說明方法錯誤。
正確對 set 遍歷,即可實現列印,具體方法如下:
1、迭代遍歷:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}

2、for循環遍歷:
for (String str : set) {
System.out.println(str);
}

優點還體現在泛型 假如 set中存放的是Object 。

Set<Object> set = new HashSet<Object>();
for循環遍歷:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj;
}else if(obj instanceof String){
String aa = (String)obj
}
........
}

㈥ java里set list 為什麼能遍歷集合

list和set集合是java中最常見的兩種數據結構,都是Collection的子集,今天就簡單的說說他們兩者的遍歷以及相互轉化吧。

一、list的遍歷

有三種遍歷方法:
/**
* list的三種遍歷
* @author Owner
*
*/
public class ListTest {

public static void main(String[] args) {

List<String> list = new ArrayList<String>();

list.add("a");
list.add("b");
list.add("c");
list.add("c");//可添加重復數據

//遍歷方法一 迭代器
for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
String value = iterator.next();

System.out.println(value);
}

//遍歷方法二 超級for循環
for(String value : list){
System.out.println(value);
}

//遍歷方法三
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}

}
}

分析一下這三種遍歷吧,第一種迭代器的遍歷,執行過程中會進行數據鎖定,性能上是安全的,效率較低;
第二種,是java新語法,增強型for循環,其中內部也是調用了迭代器;
第三種,直接使用取數組的方式,效率最快,但會有多線程安全問題。
原理如下:
ArrayList底層是採用數組來保存數據的,對於訪問數組里的數據來說,直接採用數組索引當然是最快的了,相當於直接從內存讀取數據,其他的兩種迭代方式,實際上都是一種,即iterator,foreach包裝了一下;iterator遍歷最終還是要通過索引來訪問數據,源碼中對應的get方法了。

Set的遍歷和List類似,由於set沒有get方法,所有第三種是不可以的;
總結:綜合考慮使用第二種,增強型for循環就可以

二、List和Set相互轉化:
這個需求一般也不多,直接上代碼吧:
/**
* List和Set的轉化(Set轉化成List)
*/
public static <T> List<T> SetToList(Set<T> set) {
List<T> list = new ArrayList<>();
list.addAll(set);
return list;
}
使用泛型實現。不過值得注意的是,list轉化成set會丟失數據,重復數據會丟失。

㈦ Java遍歷HashSet為什麼輸出是有序的

HashSet的實現是會變的,HashSet的迭代器在輸出時「不保證有序」,但也不是「保證無序」。也就是說,輸出時有序也是允許的,但是你的程序不應該依賴這一點。
附知乎上一篇關於該問題的問答
https://www.hu.com/question/28414001

㈧ Java中,HashSet遍歷輸出不會有重復的元素;但是,元素本身是對象的話卻是會出現重復,為什麼怎麼改

重寫對象(Employee)的兩個方法:hashCode和equals,因為hashset比較對象是否不同的依據就是這兩個方法,如果你是在eclipse環境里開發,不用手寫的,右鍵Source就有Generate的實現

熱點內容
php建網站 發布:2024-11-01 10:07:37 瀏覽:566
利用舊電腦搭建自己的私有雲伺服器 發布:2024-11-01 10:07:24 瀏覽:608
dl388p伺服器怎麼換硬碟 發布:2024-11-01 10:02:12 瀏覽:254
雲伺服器可以打游戲嘛 發布:2024-11-01 09:49:49 瀏覽:582
編程聚會 發布:2024-11-01 09:38:51 瀏覽:898
7z壓縮密碼 發布:2024-11-01 09:38:50 瀏覽:660
sql字元串去掉空格 發布:2024-11-01 09:27:27 瀏覽:17
c語言學生通訊錄 發布:2024-11-01 09:26:22 瀏覽:286
門線告警演算法 發布:2024-11-01 09:24:58 瀏覽:522
當樂網源碼 發布:2024-11-01 09:08:08 瀏覽:226