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

SET集合

set集合存放不反复的元素,set集合中不存在equal值为ture的元素;hashSet和TreeSet是set接口的经常使用两个实现类,分别用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 HashSet和HashCode

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

加入对象到HashSet的过程:

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

HashSet的contains方法实现:

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

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

map集合

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

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

map接口的经常用法有get和set:

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
值 + 1。key不变*/

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

}else{

/**初始数值*/

map.add(arr[i],1)

}

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

【javaSE】HashSet和HashMap的更多相关文章

  1. HashSet和HashMap的区别

    HashSet和HashMap的区别.Java的HashSet类是由哈希表支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用 null 元素.HashSet类为基本操作提供 ...

  2. HashSet与HashMap的区别

    本文由 ImportNew - 唐小娟 翻译自 Javarevisited.欢迎加入翻译小组.转载请见文末要求. HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到C ...

  3. java数据结构之HashSet和HashMap(java核心卷Ⅰ读书笔记)

    增加 删除 remove方法,可以删除指定的一个元素. 查找 ********************* **************************** HashSet既不可以用 0 1 2 ...

  4. Java HashSet和HashMap源码剖析

    转自: Java HashSet和HashMap源码剖析 总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说Ha ...

  5. Java集合 -- HashSet 和 HashMap

    HashSet 集合 HashMap 集合 HashSet集合 1.1 Set 接口的特点 Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B:没有索引 C:存入集合的元素没有重复 1. ...

  6. HashSet、HashMap、Hashtable、TreeMap循环、区别

    HashSet 循环 //可以为null HashSet<Object> hashSet =new HashSet<Object>(); hashSet.add(1); has ...

  7. == 和 equals,equals 与 hashcode,HashSet 和 HashMap,HashMap 和 Hashtable

    一:== 和 equals == 比较引用的地址equals 比较引用的内容 (Object 类本身除外) String obj1 = new String("xyz"); Str ...

  8. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等

    1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...

  9. JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)14

    一.集合Collection 1. 集合介绍 变量:表示的内存中的一个空间,只能保存确定类型的单个数据 数组:表示的是内存中的多个连续的空间,这些空间中可以存储多个同类型的数据. 后期继续学习面向对象 ...

  10. 验证HashSet和HashMap不是线程安全

    JAVA集合类: java.util包下的HashSet和HashMap类不是线程安全的, java.util.concurrent包下的ConcurrentHashMap类是线程安全的. 写2个测试 ...

随机推荐

  1. UI篇--布局问题

    1.android:layout_marginRight 不起作用解决方法 今天想在RelativeLayout的左右分别放上一个按钮, 左边按钮用marginLeft="10dp" ...

  2. linux命令——scp 两台linux机器间文件或目录传输

    不同的Linux之间copy文件常用有3种方法: 第一种:ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种:采用sam ...

  3. Codeforces 167B Wizards and Huge Prize(概率dp)

    题意: n个人,开始有一个容量为k得背包,击败一个人背包可以获得一定容量或得到一个财富(放入背包内),给出击败每个人的概率,求至少击败l个人,且背包容量大于获得的总财富值的概率 分析: 状态好确定,d ...

  4. Jemeter对Oracle数据库性能测试方法

    下载Oracle的jdbc数据库驱动包,注意Oracle数据库的版本,这里使用的是:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 ...

  5. aspx与ascx,ashx的用法详细的总结介绍

    这篇文章主要是对aspx与ascx,ashx的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网 ...

  6. commons-lang3-3.4.jar

    StringUtils 1.StringUtils.isBlank(str); 检查字符串是否为空白(“ ”),为空(“”),为null. * StringUtils.isBlank(null)    ...

  7. mongoDB 3.0 安全权限访问控制 -摘自网络

    "E:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" --logpath E:\mongodb\log\mongodblog.l ...

  8. [转]虚方法(virtual)和抽象方法(abstract)的区别

    虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: //抽象方法pub ...

  9. Oracle导入导出之dmp

    Oracle导入导出有两种方式,分别是imp/exp与impdp/expdp. 1.imp/exp exp scott/tiger file=d:\test.dmp log=d:\test.log o ...

  10. Java IO (1) - InputStream

    Java IO (1) - InputStream 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理上 ...