Map:

在运用map和set

集合之前首先要弄清楚它们的基本定义是什么。

简介:map是一种关联式容器,但是她储存方式是以键值对(key/value)存在的。

Map用法:

定义Map集合并往集合中加入几个元素:

    //map 键值对 json格式 根据你的键名来获取对应的值
Map<String, Object> map=new HashMap<>();
map.put("ht", "邵阳");
map.put("hxc","永州");
map.put("zsy", "岳阳");
map.put("cpc", "株洲");
System.out.println(map);//輸出map中添加的值

有的时候值插入过多就会出现重复值得问题是什么样子,那要怎么解决呢?

key相同则覆盖values的值 以最后加入进去的值为真

Map<Integer,Object> map2=new HashMap<>();
//避免出现重复的健
for (int i = ; i <; i++) {
if (map2.containsKey(i)) {
map2.put(i, "z"+i);
}
}

如果值value相同 而key不同 又会成为什么问题?

当键值对中的值相同而健不同,你可以同时创建2个输出发现

键值对只和健有关,与值不相关。

用方法Map.entrySet(),接口Map.Entry去映射输出Map中键值(因为接口中提供getKey与getValue方法)

//用Map.Entry接口与Map.entrySet()方法映射
for (java.util.Map.Entry<Integer,Object> emp :map2.entrySet()) {
System.out.println("key"+emp.getKey()+"values:"+emp.getValue());
}
System.out.println(map2);

Set:

简介:set也是一种关联式容器,不过它的容器底层实现原理是黑红树;

红黑树是一颗近似平衡的搜索二叉树,在对元素的查找中有很高的效率。

Set用法:

定义一个Set集合并往其中添加几条元素:

Set<String> set=new TreeSet();
//添加几个元素
set.add("ht");
set.add("zs");
set.add("jk");
set.add("hf");
set.add("qq");

set一般遵循自然排序(26个英文字母),Set集合的值是不可重复的,若是重复那么他就成了无序。

迭代器输出元素

//迭代器输出
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

for循环遍历元素

//循环遍历输出
for (String s : set) {
System.out.println(s);
}

自定义排序

//自定义排序器
Set<Person> set2=new TreeSet<>(new Age());
//equals比较的是内存的地址,而不是对象属性
// System.out.println(new Person(1,"青灯",17).equals(new Person(1,"青灯",17)));
set2.add(new Person(,"青灯",));
set2.add(new Person(,"青灯",));
set2.add(new Person(,"青灯",));
set2.add(new Person(,"青灯",));
set2.add(new Person(,"青灯",));
//foreach的底层原理就是迭代器
for (Person p : set2) {
//默认转换为String的类型
System.out.println(p);
}

谢谢观看!

Map、Set的基本概括的更多相关文章

  1. go sync.map源码解析

    go中的map是并发不安全的,同时多个协程读取不会出现问题,但是多个协程 同时读写就会出现 fatal error:concurrent map read and map write的错误.通用的解决 ...

  2. perf 高级命令简介

    perf 高级命令简介 1.使用 tracepoint 当 perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot. 使用ls命令来演示 sys_enter 这个tr ...

  3. perf之sched

    如果你对你的进程的响应时间极其苛刻,有一天你发现你的进程响应时间变慢了,而恰好这个机器上也有其他的进程在跟你的进程争用CPU,你想看看你的进程被内核调度的情况,那么你需要用perf-sched工具. ...

  4. Perf -- Linux下的系统性能调优工具,第 2 部分 特殊用法以及内核调优示例

    https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/ 本文内容简介 之前介绍了 perf 最常见的一些用法,关注于 Linux 系统上应用程序 ...

  5. (转)Shadow Map & Shadow Volume

    转自:http://blog.csdn.net/hippig/article/details/7858574 shadow volume 这个术语几乎是随着 DOOM3 的发布而成为FPS 玩家和图形 ...

  6. Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...

  7. mapreduce精简概括--转

    mapreduce精简概括 We want to count all the books in the library. You count up shelf #1, I count up shelf ...

  8. Set 和 Map 数据结构

    Set Set 对象允许你存储任何类型的 唯一值, 无论是 原始值(一共6种,string, number, boolean, undefined, null,和 es6 新增的 symbol) 还是 ...

  9. 【Scala篇】--Scala中集合数组,list,set,map,元祖

    一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...

随机推荐

  1. python 图形

    import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt ...

  2. STM32 软件按键消抖

    引言 通常按键所用的开关都是机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖 ...

  3. 场景图(Scene Graph)

    场景(Scene) · GitBook https://docs.cocos.com/cocos2d-x/manual/zh/basic_concepts/scene.html 场景图(Scene G ...

  4. Docker入门常识帖

    上传镜像到官方仓库 https://blog.csdn.net/yuhui123999/article/details/82220093 注册账号 (免费的) https://hub.docker.c ...

  5. winddows rabbitmq安装与配置

    RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  6. Docs-.NET-C#-指南-语言参考-关键字-值类型:bool

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean  ...

  7. netty5心跳与阻塞性业务消息分发实例

    继续之前的例子(netty5心跳与业务消息分发实例),我们在NettyClientHandler把业务消息改为阻塞性的: package com.wlf.netty.nettyclient.handl ...

  8. Spring cloud微服务安全实战-4-8Zuul网关安全开发(一)

    安全相关的代码和业务逻辑相关的代码实际上是在一个应用里面的,在这个应用里面,我们需要去,这个应用本身的处理逻辑里面需要去处理令牌和用户信息之间的转换. 然后我们需要去知道认证服务器的地址,这些都是耦合 ...

  9. Laya的位图文字

    参考: Laya文本 测试版本:Laya 2.1.1.1 大部分游戏都会用到位图文字,例如dnf的伤害数字. 白鹭的位图文字是美术提供0-9十张单张图片,由TextureMerger导出fnt+jso ...

  10. DBGrid中插入DateTimePicker

    DateTimePicker inside a DBGrid Here's how to place a TDateTimePicker into a DBGrid. Create visually ...