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);
}

谢谢观看!

最新文章

  1. 支持coclock模式
  2. Google140道面试题
  3. Linux学习之二——档案与目录的属性和权限
  4. 图形处理的api
  5. Hibernate3回顾-1-部署
  6. SVN 命令行 精编版
  7. mac下安装mysql 连接时候报错 ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock&#39; (2)
  8. 再也不要看到Eclipse万恶的arg0,arg1提示
  9. redis中各种数据类型对应的jedis操作命令
  10. C#使用.net.mail配置163邮箱报错:不允许使用邮箱名称。 服务器响应为:authentication is required,smtp9,DcCowABHK4UYE11W2k6fAQ--.52196S2 1448940312
  11. Win8 App使用Listview的简单方法
  12. win10下VS2015局域网调试配置
  13. [学习OpenCV攻略][006][平滑图片]
  14. 你不知道的JS之 this 和对象原型(一)this 是什么
  15. [原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)
  16. 【转】JAVA多线程实现的四种方式
  17. MySQL系列详解四:MySQL事务-技术流ken
  18. &quot;Linux内核分析&quot;第七周
  19. gitlab 502 报错
  20. 抽屉之Tornado实战(6)--session工厂(工厂方法模式)

热门文章

  1. PostgreSQL定时自动备份
  2. R scholar和rentrez | NCBI和Google scholar文献数据挖掘
  3. Vue 中Axios 使用
  4. GIS地理工具案例教程——批量合并影像
  5. typescript接口扩展
  6. sqllite connectionstring setting
  7. osg编译日志
  8. HTTP1.1新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 、 CONNECT
  9. 【443】Tweets Analysis Q&amp;A
  10. Spring Cloud Config 分布式配置管理 5.3