List、Map、Set、HashMap、HashSet、Hashtable

list,set,map区别

  • list
    • 按对象进入的顺序保存对象,不做排序或编辑
    • 基于ArrayList:
      由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢
    • 基于LinkedList:
      向List中间插入与删除的开销并不大,随机访问则相对较慢
      addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法使得LinkedList可以当作堆栈、队列和双向队列使用
  • set
    • 每个对象只接受一次,使用自己内部的排序方法
  • map
    • 每个元素基于key-value存储,不关心添加顺序
    • containsKey()和containsValue()测试Map中是否包含某个“键”或“值”
    • 如果需要添加元素的顺序,应该使用LinkedHashSet, LinkedHashMap

HashMap

  1. 遍历
    for each map.entrySet()
Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
    entry.getKey();
    entry.getValue();
}
//既需要key也需要value

显示调用map.entrySet()的集合迭代器

Iterator.Entry> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry entry = iterator.next();
    entry.getKey();
    entry.getValue();
}

for each map.keySet(),再调用get获取

Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {
    map.get(key);
}
//只是遍历key而无需value的话

for each map.entrySet(),用临时变量保存map.entrySet()

SetString, String>> entrySet = map.entrySet();
for (Entry<String, String> entry : entrySet) {
    entry.getKey();
    entry.getValue();
}

HashSet

  1. 遍历
    迭代遍历
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
  String str = it.next();
  System.out.println(str);
}

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
    }
}

Hashtable

  1. 遍历
for(int i = 0;i<100;i++){
    ht.put("key"+i, "value"+i);
}
for(Iterator itr = ht.keySet().iterator(); itr.hasNext();){
    String key = (String) itr.next();
    String value = (String) ht.get(key);
    System.out.println(key+"--"+value);
}
Enumeration e1 = ht.elements();
while (e1.hasMoreElements()) {
    System.out.println(e1.nextElement());
}
Enumeration e2 = ht.keys();
while (e2.hasMoreElements()) {
    String key = (String) e2.nextElement();
    System.out.println(key +"---"+ht.get(key));
}

你可能感兴趣的:(Java)