当前位置: 首页 > wzjs >正文

网站建设 建站知识贵阳网站建设公司

网站建设 建站知识,贵阳网站建设公司,网站的统计代码,建筑装饰装修工程公司目录 一、Map1.定义2. Map集合的体系3.Map集合体系的特点代码演示 4.Map常用方法代码演示 5.Map集合的遍历方法代码演示: 6.小案例代码演示 7.HashMap集合的底层原理8. LinkedHashMap的底层原理9.TreeMap的底层原理代码演示 一、Map 1.定义 map集合也被叫做“键值…

目录

  • 一、Map
    • 1.定义
    • 2. Map集合的体系
    • 3.Map集合体系的特点
      • 代码演示
    • 4.Map常用方法
      • 代码演示
    • 5.Map集合的遍历方法
      • 代码演示:
    • 6.小案例
      • 代码演示
    • 7.HashMap集合的底层原理
    • 8. LinkedHashMap的底层原理
    • 9.TreeMap的底层原理
      • 代码演示

一、Map

1.定义

map集合也被叫做“键值对集合”,格式:{key1=va;ue1,key2=value2}
Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。

2. Map集合的体系

  • 接口:Map
  • 实现类:HashMap<K,V>,TreeMap<K,V>
  • HashMap:LinkedHashMap<K,V>

3.Map集合体系的特点

注意Mao集合体系的特点是由键决定的,值只是一个附属品,值是不做要求的。

  • hashMap(由键决定特点):无序,不重复,无索引;(用的最多)
  • LinkedHashMap(由键决定特点);有序、不重复、无索引
  • TreeMao(有键决定特点):按照大小默认升序排序、不重复、无索引。

代码演示

package com.item.demo2map;
import java.util.*;
public class Mapdemo1 {public static void main(String[] args) {//1.创建一个Map集合Map<String,Integer> map=new HashMap<>();//一行经典结构map.put("张三", 18);map.put("李斯", 19);map.put("叠山", 20);map.put("叠山", 20);map.put("王五", 20);map.put(null,null);System.out.println(map);//{null=null, 张三=18, 王五=20, 叠山=20, 李斯=19}System.out.println("=========");Map<String,Integer> map1=new LinkedHashMap<>();//一行经典结构map1.put("张三", 18);map1.put("李斯", 19);map1.put("叠山", 20);map1.put("叠山", 20);map1.put("王五", 17);map1.put(null,null);System.out.println(map1);//{张三=18, 李斯=19, 叠山=20, 王五=17, null=null}}
}

4.Map常用方法

代码演示

package com.item.demo2map;
import java.util.*;
public class Mapdemo2 {public static void main(String[] args) {Map<String,Integer> map=new HashMap<>();map.put("张三", 18);System.out.println(map.put("张三", 24));//18,返回被重复的。map.put("李斯", 19);map.put("叠山", 20);map.put("叠山", 20);map.put("王五", 20);map.put(null,null);System.out.println(map);//{null=null, 张三=24, 王五=20, 叠山=20, 李斯=19}//写代码演示常用方法System.out.println("=========");System.out.println(map.get("张三"));//24System.out.println(map.get("王五"));//20System.out.println(map.get("lisi"));//nullSystem.out.println(map.get(null));//nullSystem.out.println("=======");System.out.println(map.containsKey("张三"));//trueSystem.out.println(map.containsKey("lisi"));//falseSystem.out.println(map.containsValue(20));//trueSystem.out.println(map.containsValue(18));//falseSystem.out.println("=======");System.out.println(map.isEmpty());System.out.println(map.size());System.out.println("=======");map.remove("李斯");System.out.println(map);System.out.println("=======");//获取所有的键放到一个Set集合返回给我们。Set<String> keySet = map.keySet();for (String key : keySet) {System.out.println(key);}System.out.println("=======");//获取所有的值放到一个Collection集合返回给我们。Collection<Integer> values = map.values();for (Integer value : values) {System.out.println(value);}map.clear();System.out.println(map);}
}

5.Map集合的遍历方法

Map集合的遍历方式一:键找值

  • 先获取Map集合全部的键,再通过遍历键来找值。
  • public Set keySet():获取所有键的集合
  • public V get(Object key):根据键获取其对应的值

Map集合的遍历方式二:键值对

  • 把"键值对“看成一个整体进行遍历(难度挺大)
  • Set<Map.Entry<k,V> entrySet():获取所有键值对的集合。

Map集合的遍历方式三:Lambda遍历

  • JDK1.8开始之后的新技术(非常的简单)
  • default void forEach(BiConsumer<? super K,? super V>action):结合lambda遍历Map集合

代码演示:

package com.item.demo2map;import java.util.HashMap;
import java.util.*;
import java.util.function.BiConsumer;
public class Mapdemo3 {public static void main(String[] args) {Map<String,Integer> map=new HashMap<>();map.put("张三", 18);map.put("李斯", 19);map.put("叠山", 20);map.put("叠山", 20);map.put("王五", 20);System.out.println(map);//{张三=18, 王五=20, 叠山=20, 李斯=19}//一、遍历一//1.获取所有键的集合Set<String> keySet = map.keySet();System.out.println(keySet);//[张三, 王五, 叠山, 李斯]//2.遍历键,通过键获取值for (String key : keySet) {//3.获取值Integer value = map.get(key);System.out.println(key+"="+value);}System.out.println("=======");//二、遍历二,Map.Entry<k,V>接口的实现类Set<Map.Entry<String, Integer>> entrySet = map.entrySet();for (Map.Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key+"="+value);}System.out.println("======");//三、遍历三map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String s, Integer integer) {System.out.println(s+"="+integer);}});//简化map.forEach((key,value)->{System.out.println(key+"="+value);});}
}

6.小案例

Map集合的案例-统计投票信息
需求:

  • 某个班级80名学生,现在需要组织秋游活动,班长提供了四个景点,每个学生只能选择一个景点,请统计出最终那个景点想去的人数最多。

代码演示

package com.item.demo2map;
import java.util.*;
public class Mapdemo4 {public static void main(String[] args) {show();}public static void show(){//1.把80个学生的投票信息保存到一个Map集合中List<String> location = new ArrayList<>();String[] names={"玉龙雪山","长城","少林寺","丽江"};Random r=new Random();for (int i = 0; i < 80; i++) {int index=r.nextInt(names.length);location.add(names[index]);}System.out.println(location);//2.创建Map集合Map<String,Integer> map=new HashMap<>();for (String s : location) {Integer count=map.get(s);if(count==null){map.put(s,1);}else{map.put(s,count+1);}}//3.遍历Map集合map.forEach((key,value)->{System.out.println(key+"被选择"+value+"次");});}
}

7.HashMap集合的底层原理

实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。
HashMap跟HashSet的底层原理是一摸一样的,都是基于哈希表实现的
原因:

 public HashSet(){map=new HashMap();
}

8. LinkedHashMap的底层原理

实际上:原来学的LinkedHashSet集合的底层就是基于LinkedHeadMap实现的。
底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)

9.TreeMap的底层原理

实际上:原来学的TreeSet集合的底层就是基于TreeMap实现的,
TreeMap集合同样也支持两种方式来指定排序规则:

  • 1.让类实现Comparable接口,重写比较规则。
  • 2.TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。

代码演示

主类代码;

package com.item.demo2map;
import com.item.demo1hashset.Teacher;
import java.util.*;
public class Mapdemo5 {public static void main(String[] args) {Map<Teacher,String> map=new TreeMap<>();map.put(new Teacher("小王", 18,3245.2),"424期");map.put(new Teacher("小李", 19,3345.3),"423");map.put(new Teacher("小孙", 20,3609.4),"421");map.put(new Teacher("小张", 18,2780.3),"234");System.out.println(map);//方法1System.out.println("======");//2.方法二Map<Teacher,String> map1=new TreeMap<>((o1,o2)->Double.compare(o1.getSalary(),o2.getSalary()));map1.put(new Teacher("小王", 18,3245.2),"424期");map1.put(new Teacher("小李", 19,3345.3),"423");map1.put(new Teacher("小孙", 20,3609.4),"421");map1.put(new Teacher("小张", 18,2780.3),"234");System.out.println(map1);//方法1}
}

Teacher类代码:

package com.item.demo1hashset;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher implements Comparable<Teacher>{private String name;private int age;private double salary;@Overridepublic String toString() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +", salary=" + salary +'}'+"\n";}//解决方法1:重写方法,比较两个对象的大小@Overridepublic int compareTo(Teacher o) {//按照年龄升序return this.getAge()-o.getAge();}
}
http://www.dtcms.com/wzjs/126540.html

相关文章:

  • 重庆企业模板建站信息郑州网络推广大包
  • 南昌网站建设 南昌做网站公司东莞seo技术
  • 网页设计专业就业前景广州优化营商环境条例
  • 2023济南疫情最新情况排名优化公司哪家效果好
  • 没有域名做网站网络口碑推广公司
  • 网站排名是怎么做软文世界官网
  • 在中国做国外网站手机网站建设平台
  • asp网站怎么做404页面百度推广入口官网
  • 皮肤测试网站怎么做私域流量运营管理
  • 南京微信网站建设他达拉非片多少钱一盒
  • 网站自己怎么做保健品的营销及推广方案
  • 网页设计实训报告技术难点海淀seo搜索优化多少钱
  • 做游戏网站思想步骤网站建设报价明细表
  • 在自己的网站里做讲课视频磁力多多
  • 口碑好的武进网站建设互联网销售
  • 有哪些做兼职的网站企业文化是什么
  • 我想建设一个网站百度推广基木鱼
  • 网站建设基础实验1国内搜索引擎有哪些
  • flash xml网站百度极速版下载
  • 量品定制合伙人网站seo排名优化工具
  • 在线网站建设课程网络推广吧
  • 都匀网站建设关键词优化是怎样收费的
  • 做软装素材从哪些网站找购买一个网站域名需要多少钱
  • 中国中标信息查询系统seo外包公司费用
  • 苏州教育学会网站建设能打开任何网站浏览器
  • 高级网站建设seo长尾快速排名
  • 免费发布信息网站平台2019年 2022疫情爆发
  • 网站的按钮怎么做网站一年了百度不收录
  • 济南建站价格线上广告推广平台
  • 做营销网站要多少钱线上推广网络公司