package cn.learn.Map;
/*
java.util.Hashtable<k,y> implements Map<k,v>
早期双列集合,jdk1.0开始
同步的,单线程,安全,慢,底层也是哈希表
与HashMap不一样的是,Hashtable key,value不允许存储null Hashtable与vector一样被多线程集合HashMap和ArrayList取代 但是Hashtable的子类Properties依然活跃,它是唯一一个与I/O流相结合的集合 */
public class HashtableClass {
}
 package cn.learn.Map;

 import java.util.HashMap;
import java.util.LinkedHashMap; /*
java.util.LinkedHashMap<k,v> extends HashMap
底层原理:
哈希表+链表(记录元素的顺序)
*/
public class LinkedHashMapClass {
public static void main(String[] args) {
HashMap<String,String> map= new HashMap<>();
map.put("a","b");
map.put("3a","b");
map.put("2a","b");
map.put("1a","b");
System.out.println(map); //key不重复且无序 LinkedHashMap<String,String> linked = new LinkedHashMap<>();
linked.put("a","b");
linked.put("3a","b");
linked.put("2a","b");
linked.put("1a","b");
System.out.println(linked); //有序且不重复,存取一致
} }
 package cn.learn.Map;

 import java.security.Key;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; /*
java.util.Map1<k,v> -双列集合
一个元素包含两个值(一个key,一个value),key不能重合
Map中key和value的数据类型可以相同,也可以不同 java.util.HashMap<k,v>集合 implements Mqp<k,v>接口
HashMap集合的特点
1.HashMap集合底层是哈希表:查询的速度特别的快
2.存储的元素和取出元素的顺序可能不一致
3.底层是:数组+单向链表/红黑树 = 哈希表 java.util.LinkedHashMap<k,v> extends HashMap<k,v>
LinkedHashMap的特点:
1.存取元素的顺序一致
2.哈希表+链表(保证迭代顺序) HashMap存储自定义类型键值
Map为了保证唯一性,需要重写hashCode和equals方法,以保证key唯一
和HashSet一样,value可不唯一 */
public class MapMethods {
public static void main(String[] args) {
show1();
}
private static void show1(){
HashMap<String,String> hashMap = new HashMap<>();
//put添加集合元素,若key不在,返回value为空,若存在替换value,返回被替换的value
System.out.println(hashMap.put("1","da")); //返回null System.out.println(hashMap.put("1","da2")); //返回被替换的值da System.out.println(hashMap); //打印了不是地址,说明重写了toString方法{1=da2} //remove(Object key)删除元素,存在返回删除的value,不存在返回null
String remove = hashMap.remove("1");
System.out.println(remove); //da2 //get(Object key)获取value
//containsKey(Object key)判断是否包含指定的键
// 包含返回true不包含返回false,和遍历一起使用进行筛选 //遍历双列集合
System.out.println(hashMap.put("2","da29"));
System.out.println(hashMap.put("5","da42"));
System.out.println(hashMap.put("26","5da2")); //KeySet()实际是把Key值取出放入Set<key>集合(不允许重复),则可用迭代器,增强for
Iterator<String> iter=hashMap.keySet().iterator(); //此时Set放入的是key值,迭代的也是key值
while(iter.hasNext()){
String k= iter.next();
System.out.println(hashMap.get(k));
}
//增强for遍历
for (String str : hashMap.keySet()) {
System.out.println(hashMap.get(str));
} /*
entrySet遍历
在Map集合中有个内部接口Entry,Map.Entry<k,v>
作用:当Map集合一创建,就会有个Entry对象(键与值的映射关系),放入Set中
返回类型 Set<Map.Entry<K,V>>,再调用Set的iterator方法,使用迭代器,取出Map.Entry<Object,Object>
再调用Entry的两个方法遍历
Map.Entry有两个方法,getKey和getValue
*/
//放入Set
Set<Map.Entry<String,String>> set = hashMap.entrySet();
//使用迭代器
Iterator<Map.Entry<String,String>> it = set.iterator();
//利用迭代器方法遍历
while(it.hasNext()){
//取得Set的元素
Map.Entry<String,String> entry= it.next();
//调用 Map.Entry的方法
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}//当然可以也可以使用增强for循环 }
}

HashMap -双列集合的遍历与常用的方法的更多相关文章

  1. JAVA双列集合HashMap

    HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...

  2. (10)集合之双列集合Map,HashMap,TreeMap

    Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...

  3. 双列集合Map的嵌套遍历

    双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...

  4. Map集合(双列集合)

    Map集合(双列集合)Map集合是键值对集合. 它的元素是由两个值组成的,元素的格式是:key=value. Map集合形式:{key1=value1 , key2=value2 , key3=val ...

  5. Java之Map接口(双列集合)

    Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...

  6. Java中的集合(七)双列集合顶层接口------Map接口架构

    Java中的集合(七)双列集合顶层接口------Map接口 一.Map接口的简介 通过List接口,我们知道List接口下的集合是单列集合,数据存储是单列的结构.Map接口下是一个键值对(key-v ...

  7. 双列集合Map

    1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据    getKey---通过key获取数据    keySet- ...

  8. Map集合——双列集合

    双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...

  9. java oop 单列 双列 集合, 迭代器 的使用和说明

    一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...

随机推荐

  1. 如何设置 ComboBox 下拉列表的高度或间距

    ComboBox 的下拉列表部分总是很挤,看起不舒服,但是设置了 ItemHeight 没用,怎么办呢? 首先设置一个较大的 ItemHeight 值,比如 20: 然后设置 ComboBox 的 D ...

  2. 利用vsftpd在Linux构建安全的FTP服务

    最近在机房搭建Linux环境,需要用到了FTP服务,查看了许多的资料,在这里做一下笔记 一.安装 方法一,使用yum命令安装,需要能够连接外网 # yum install vsftpd 方法二,使用安 ...

  3. 王垠-40行代码 -cps.ss

    ;; A simple CPS transformer which does proper tail-call and does not ;; duplicate contexts for if-ex ...

  4. unixbench

    1.下载 https://github.com/kdlucas/byte-unixbench/archive/v5.1.3.tar.gz 2.修改Makefile 交叉编译 #CC=gccCC = a ...

  5. java程序员必知的 8大排序

    Java常用的八种排序算法与代码实现 排序问题一直是程序员工作与面试的重点,今天特意整理研究下与大家共勉!这里列出8种常见的经典排序,基本涵盖了所有的排序算法. 1.直接插入排序 我们经常会到这样一类 ...

  6. dede织梦5.7上传图片302以及Error #2038问题解决

    dede织梦5.7上传图片302以及Error #2038问题解决 三月 19, 2012 · Posted in DEDE二次开发, PHP  Number of View: 1388 在后台图片集 ...

  7. TabController定义顶部tab切换

    前面通过DefaultTabController组件实现了AppBar里面的顶部导航切换,但是在项目中有数据请求,上拉加载更多等操作的时候,前面的写法,就不是很方便操作,因此,在flutter里面,还 ...

  8. PHPExcel笔记

    PHPExcel可是个好东东,功能强大,下面这是一个phpExcel简易中文帮助手册,列举了各种属性,以及常用的操作方法,是每一个都用实例加以说明,希望对大家有所帮助. 引用PHPExcel incl ...

  9. [CSP-S模拟测试]:折纸(模拟)

    题目描述 小$s$很喜欢折纸.有一天,他得到了一条很长的纸带,他把它从左向右均匀划分为$N$个单位长度,并且在每份的边界处分别标上数字$0\sim n$.然后小$s$开始无聊的折纸,每次他都会选择一个 ...

  10. linux发版

    使用MobaXterm_v8.5 1.upload需要更换的文件 2.关闭Tomcat    cd /usr/local/tomcat/apache-tomcat-6.0.30-pcitcaly/  ...