• 【javaSE】HashSet和HashMap


    ************************************************************************
      ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
    ************************************************************************

    SET集合

    set集合存放不反复的元素,set集合中不存在equal值为ture的元素;hashSetTreeSetset接口的经常使用两个实现类,分别用hash算法和排序二叉树算法来实现;比如。将100以内不反复的随机20个数写入set集合

             Set<Interger> hashset=new HashSet<Integer>();

             Random r =new Random();

             while(hashset.size()<10){

             hashset.add(r.nextInt(100));

    }

    set集合不同于List对象。元素不和下标进行相应,无法从Set集合中取出特定的元素,可是能够遍历整个Set集合。方式是通过iterator遍历方法,返回Iterator遍历对象;

    也能够是增强型For循环。在java编译器中是等价的;

    比如:

             Set<String> strset = new HashSet<String>;

             strset.add(“adb”);strset.add(“che”);

    增强型for循环

             for(String str: strset){

                       system.out.println(str)

    }

             迭代器为:

                       Iterator It =strset.iterator();

                       while(It.hasNext()){

                                String str=It.next();

                                system.out.println(str)

    }

    6.1 HashSetHashCode

             HashSet的实现通过Hash表实现的:

             加入对象到HashSet的过程:

             元素——取出元素的hashcode---通过Hash算法——索引到对应的存储空间。

             HashSetcontains方法实现:

             參数对象的hashcode值找到对应的存储空间。然后和该空间的对象进行equal比較。

     

             hashCode方法。与equals方法的一致性。一般使用IDE工具生成hashCode算法;

    map集合

    map集合定义了查找表,即所谓的“value””key”映射对,key能够看出value的索引,作为KeyValue在集合中不能反复;

             map接口的实现类经常使用的有hash表实现的HashMap,排序二叉树的TreeMap;

             map接口的经常用法有getset:

             Object put(K key, Object value);作用将Key_value映射对写入到Map中,假设集合中已经包括该Key,则返回Key映射的原理的Value值;假设没有则返回null

             V get(K key);返回K值映射的value;

    7.1 Map的经常用法

             Boolean containsKey(Object key);推断map中是否包括Key的索引。

             Boolean containsValue(object value);推断map中是否包括value的值。

             比如:

                       创建数组:

                       String str=”123,321,124,421,125,521”;

                       String[] arr=str.split(“”)

                       创建Map对象

                       Map<String,integer> map=new HashMap<String,integer>();

                       统计字符出现的次数:str作为Key,出现次数作为Value;须要遍历字符数组,检查集合中是否包含Key值,来推断出现的次数;

                       for(i=0;i<arr.length;i++){

                                if(map.containsValue(arr[i]))

                                {/**put方法替换,value + 1key不变*/

             map.put(arr[i],map.get(arr[i]) + 1);

    }else{

    /**初始数值*/

    map.add(arr[i],1)

    }

    ************************************************************************
      ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
    ************************************************************************

  • 相关阅读:
    利用杨辉三角和阶乘计算组合数
    验证字符串是否为回文数
    利用线性同余产生伪随机数+可变参数使用
    根据RandomStr.java:使用类型转换生成六位验证字符串。
    Java语言基础问题
    从命令行输入参数值,输出求和值。
    愚公移山_节选(伪代码)
    CodeForces
    CodeForces
    E
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5272870.html
Copyright © 2020-2023  润新知