JAVA遍歷HASHMAP

所謂同步與非同步,體如今多線程上,若是一個線程修改了對象,則要同步下。HashSet不是同步的,若是多個線程同時訪問一個Set,只要有一個線程修改Set中的值,就必須進行同步處理,一般經過同步封裝這個Set的對象來完成同步,若是不存在這樣的對象,可使用Collections.synchronizedSet()方法完成。Set s = Collections.synchronizedSet(new HashSet(...));
java

Map集合,就是有一對屬性值的集合,屬性包含key,和value。關鍵字key是惟一不重複的。Map是一個有序的集合,因此查詢起來速度很快。而HashSet就像是把HashMap中value去掉,說白了就是隻有一個key的HashMap集合。Set是數學中定義的集合,因此元素無序, 且不能重複添加。java程序中Set集合用的很少,Map集合中的HashMap集合,List集合用的卻是很多,有時間的話不如多研究研究ArrayList,LinkedList,HashMap三個集合,但願這些對你有用。

JAVA幾種數據類型的簡單差異:安全

list是有序不可重複的,而map是以鍵值對的形式存放的

HashSet不容許重複元素,HashSet查找快,而且存儲是無序的,沒有先後關係,存儲的時候用add就加進去一個元素了,雖然JAVA中是用HashMap實現的HashSet,但HashSet沒有key,經過hashset.add(value)存儲元素,經過hashset.contains(value)判斷某元素是否存在於集合中

HashMap容許重複元素,hashmap根據key值查找元素,存儲也是無序的,一個value只能一個key,HashMap能夠當作是一個key-value的集合,經過map.put(key,value)存儲元素,經過map.get(key)得到元素值。經過map.containsKey(key)判斷是否包含某key是否在map中,經過map.containsValue(value)判斷value是否在map中

ArrayList是List是順序存放,插入刪除速度比HashMap快,查詢速度慢,ArrayList經過array.add(value)將元素加入進去,跟hashset同樣很差指定key值

ArrayList和HashMap是異步的,Vector和HashTable是同步的,因此Vector和HashTable是線程安全的,而 ArrayList和HashMap並非線程安全的。由於同步須要花費機器時間,因此Vector和HashTable的執行效率要低於 ArrayList和HashMap。多線程



遍歷HASHMAP有兩種方法:異步

第一種:
  Map map =  HashMap();
  Iterator iter = map.entrySet().iterator();
   (iter.hasNext()) {
  Map.Entry entry = (Map.Entry) iter.next();
  Object key = entry.getKey();
  Object val = entry.getValue();
  }
  效率高,之後必定要使用此種方式!


實例:ui

HashMap<String, String> cids = this.getUserClientids(uids);
this

Iterator<Entry<String, String>> entryKeyIt = cids.entrySet().iterator();
spa

HashMap<String, ArrayList<String>> temp = new HashMap<String, ArrayList<String>>();
 int i = 0;
while (entryKeyIt.hasNext()) {
       i++;
       Entry<String, String> e = entryKeyIt.next();
       String _k = e.getKey();
線程

       String _cid = e.getValue();code

}
對象

相關文章
相關標籤/搜索