zoukankan      html  css  js  c++  java
  • java基础 集合类

    java集合类主要有以下集中:

    List结构的集合类:

      ArrayList类, LinkedList类, Vector类, Stack类

    Map结构的集合类:

      HashMap类,Hashtable类

    Set结构的集合类:

      HashSet类, TreeSet类

    Queue结构的集合:

      Queue结构

    集合类,重要的增删改查。 使用集合类,需要 引入java.util.*;包

    hashmap四种遍历

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

    hashmap和hashtable的区别

    hashmap与hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别:

      一. 历史原因

      hashtable是基于陈旧的dictionary类的,hashmap是java 1.2 引进的map接口的一个实现

      二. 同步性

      hashtable是同步的 ,这个类中的一些方法保证了hashtable中你给的对象是线程安全的。而hashmap则是异步的,因此hashmap中的对象并不是线程安全的。因为 同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用hashmap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率。

      三. 值: hashmap是可以让你将空值作为一个表的条目的key或value,但是 hashtable是不能放入空值的(null)

    ArrayList和Vector的区别

      ArrayList与Vector都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也是有区别:

      一. 同步性

      Vector是同步的。这个类中的一些方法 保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全你的集合那么使用ArrayList是个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

      二.  数据增长 

      从内部实现机制来讲 ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数据目前 的长度,他们都需要扩展内部数组的长度,Vector缺省情况下自动增长原一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占空间总是比你实际需要的要大。所以,如果你要在集合 中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合初始化大小来避免不必要的资源开销。

      总结:

      1. 如果要求线程安全,使用Vector,Hashtable

      2. 如果不要求线程安全,应使用ArrayList,LinkedList,Hashmap

      3. 如果要求键值对,则使用hashmap,hashtable

      4. 如果 数据量 很大,又要线程安全考虑vertor

  • 相关阅读:
    【Language】 TIOBE Programming Community Index for February 2013
    【diary】good health, good code
    【web】a little bug of cnblog
    【Git】git bush 常用命令
    【web】Baidu zone ,let the world know you
    【diary】help others ,help yourself ,coding is happiness
    【Git】Chinese messy code in widows git log
    【windows】add some font into computer
    SqlServer启动参数配置
    关于sqlserver中xml数据的操作
  • 原文地址:https://www.cnblogs.com/lt132024/p/5946385.html
Copyright © 2011-2022 走看看