• java.util (Collection接口和Map接口)


    1:Collection和Map接口的几个主要继承和实现类

                    

    1.1  Collection接口

      Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。

      如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
        Iterator it = collection.iterator(); // 获得一个迭代子
        while(it.hasNext()) {
          Object obj = it.next(); // 得到下一个元素
        }

    1.1.1 Iterator 接口

      Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。

     2 Map接口

      Map是一个单独的接口,不继承于Collection。Map是一种把键对象和值对象进行关联的容器。一个key->value的对象

    特点:key不允许重复。 

            映射与集或列表有明显区别,映射中每个项都是成对的,Map是把键对象和值对象进行关联的容器。映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字应该是唯一的,也就是说Map中的键对象不允许重复,这是为了保证查询结果的一致性。

      关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。

    实现类: 

        HashMap 实现一个键到值映射的哈希表,通过键取得值对象,没有顺序,通过get(key)来获取value,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个); 

        HashTable 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。

        当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap。Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。

    2.1 Map.Entry

      Map是java中的接口,Map.Entry是Map的一个内部接口。

      Map提供了一些常用方法,如keySet()、entrySet()等方法。

      keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

      Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

    public class MapTest {
    
    	public static void main(String[] args) {
    		
    		Map<String,String> map = null;
    		map = new HashMap<String,String>();
    		
    		map.put("name", "小明");
    		map.put("age", "18");
    		map.put("heigh", "175");
    		
    //		遍历Map的方法1
    		Set<Map.Entry<String,String>>  set1 = map.entrySet();
    		Iterator<Entry<String, String>> iterator = set1.iterator(); 
    		while( iterator.hasNext()) {
    			 Entry<String, String> entry = iterator.next();
    			 Object key = entry.getKey();
    			 System.out.println(key);
    		}
    		
    //		遍历Map的方法2
    		Set<String> set2 = map.keySet();
    		Iterator<String> iterator1 = set2.iterator();
    		while(iterator1.hasNext()) {
    			Object key = iterator1.next();
    			Object value = map.get(key);
    			System.out.println("key=" + key +"    " + "value= " + value);
    		}
    		
    //		遍历Map中value的值
    		Collection<String> c = map.values();
    		Iterator<String> iterator3 = c.iterator();
    	    while(iterator3.hasNext()) {
    	    	Object value = iterator3.next(); 
    	    	System.out.println(value);
    	    }
    	}
    
    }
  • 相关阅读:
    vscode 远程编辑文件
    neo4j
    sqlite3-python
    pypdf2:下载Americanlife网页生成pdf合并pdf并添加书签
    thisamericanlife 百度api及腾讯翻译-正式版
    为微信二维码添加gif动态背景
    python- www.thisamericanlife.org转pdf
    python爬虫添加请求头
    Python-redis
    k8s权威指南-从xx到oo的实践全接触
  • 原文地址:https://www.cnblogs.com/myseries/p/7508110.html
Copyright © 2020-2023  润新知