List,Set,Map遍历方式 (收集的资源,值得看一下)

List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
  HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对

  

 

 

 

List遍历

   

1) List

  List list = new ArrayList();
  list.add(1);
  list.add(2);
  list.add(4);
  list.add(3);

  Iterator iterator = list.iterator();
  System.out.println("------方法一-------");
  while (iterator.hasNext()) {
   int i = Integer.parseInt(iterator.next().toString());
   System.out.println(i);
  }

  System.out.println("------方法二-------");
  for (Iterator iter = list.iterator(); iter.hasNext();) {
   int i = Integer.parseInt(iter.next().toString());
   System.out.println(i);
  }

  System.out.println("------方法三-------");
  for (Object obj : list) {
   System.out.println(obj);
  }

  System.out.println("------方法四-------");
  for (int i = 0; i < list.size(); i++) {
   int k = list.get(i);
   System.out.println(k);
  }

 

 

Set遍历

  

  Set set = new HashSet();
  set.add("123");
  set.add("abc");

  System.out.println("方法一");
  // 方法一:使用迭代器
  for(Iterator i = set.iterator(); i.hasNext(); ) {
      System.out.println(i.next());
  }
  System.out.println("方法二");

  // 方法二:使用 JDK 5 新增的 foreach 循环,只有数组和实现了 Iterable 接口的类才能这样写。
  // 冒号左边是一个局部变量,表示这个 set 中被迭代出来的元素,右边是一个数组或者是实现了 Iterable
  // 接口的类。
  for(String str : set) {
      System.out.println(str);
  }

 

 

Map遍历(1)

Map tempMap = new HashMap();
  tempMap.put("a", 1);
  tempMap.put("b", 2);
  tempMap.put("c", 3);
  // JDK1.4中
  // 遍历方法一 hashmap entrySet() 遍历
  System.out.println("方法一");
  Iterator it = tempMap.entrySet().iterator();
  while (it.hasNext()) {
   Map.Entry entry = (Map.Entry) it.next();
   Object key = entry.getKey();
   Object value = entry.getValue();
   System.out.println("key=" + key + " value=" + value);
  }
  System.out.println("");
  // JDK1.5中,应用新特性For-Each循环
  // 遍历方法二
  System.out.println("方法二");
  for (Map.Entry entry : tempMap.entrySet()) {
   String key = entry.getKey();
   int value = entry.getValue();
   System.out.println("key=" + key + " value=" + value);
  }
  System.out.println(""); // 遍历方法三 hashmap keySet() 遍历
  System.out.println("方法三");
  for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
   Object obj = i.next();
   System.out.println(obj);// 循环输出key
  }
  for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
   Object obj = i.next();
   System.out.println(obj);// 循环输出value
  }
  for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
   Object obj = i.next();
   System.out.println("key=" + obj + " value=" + tempMap.get(obj));// 循环输出key 和 value
  }
  System.out.println(""); // 遍历方法四 treemap keySet()遍历
  System.out.println("方法四");
  for (Object o : tempMap.keySet()) {
   System.out.println("key=" + o + " value=" + tempMap.get(o));
  }

 

 

Map遍历(2)

public static void main(String[] args) { 
  Map<String, String> map = new HashMap<String, String>(); 
  map.put("1", "value1"); 
  map.put("2", "value2"); 
  map.put("3", "value3"); 
  
  //第一种:普遍使用,二次取值 
  System.out.println("通过Map.keySet遍历key和value:"); 
  for (String key : map.keySet()) { 
   System.out.println("key= "+ key + " and value= " + map.get(key)); 
  } 
  
  //第二种 
  System.out.println("通过Map.entrySet使用iterator遍历key和value:"); 
  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); 
  while (it.hasNext()) { 
   Map.Entry<String, String> entry = it.next(); 
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); 
  } 
  
  //第三种:推荐,尤其是容量大时 
  System.out.println("通过Map.entrySet遍历key和value"); 
  for (Map.Entry<String, String> entry : map.entrySet()) { 
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); 
  } 

  //第四种 
  System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); 
  for (String v : map.values()) { 
   System.out.println("value= " + v); 
  }

 

 

你可能感兴趣的:(list,set,Map遍历方式)