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

杨浦区网站建设wordpress如何搭建在局域网

杨浦区网站建设,wordpress如何搭建在局域网,工商注册网站,英文网站搜索第一章 Map集合 1.1 概述 现实生活中#xff0c;我们常会看到这样的一种集合#xff1a;IP地址与主机名#xff0c;身份证号与个人#xff0c;系统用户名与系统用户对象等#xff0c;这种一一对应的关系#xff0c;就叫做映射。Java提供了专门的集合类用来存放这种对象…第一章 Map集合 1.1 概述 现实生活中我们常会看到这样的一种集合IP地址与主机名身份证号与个人系统用户名与系统用户对象等这种一一对应的关系就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象即java.util.Map接口。 我们通过查看Map接口描述发现Map接口下的集合与Collection接口下的集合它们存储数据的形式不同如下图。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMUMtL1G-1572792710984)(img\Collection与Map.bmp)] Collection中的集合元素是孤立存在的理解为单身向集合中存储元素采用一个个元素的方式存储。Map中的集合元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成通过键可以找对所对应的值。Collection中的集合称为单列集合Map中的集合称为双列集合。需要注意的是Map中的集合不能包含重复的键值可以重复每个键只能对应一个值。 1.2 Map常用子类 通过查看Map接口描述看到Map有多个子类这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。 HashMapK,V存储数据采用的哈希表结构元素的存取顺序不能保证一致。由于要保证键的唯一、不重复需要重写键的hashCode()方法、equals()方法。LinkedHashMapK,VHashMap下有个子类LinkedHashMap存储数据采用的哈希表结构链表结构。通过链表结构可以保证元素的存取顺序一致通过哈希表结构可以保证的键的唯一、不重复需要重写键的hashCode()方法、equals()方法。 tipsMap接口中的集合都有两个泛型变量K,V,在使用时要为两个泛型变量赋予数据类型。两个泛型变量K,V的数据类型可以相同也可以不同。 1.3 Map接口中的常用方法 Map接口中定义了很多方法常用的如下 public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除返回被删除元素的值。public V get(Object key) 根据指定的键在Map集合中获取对应的值。boolean containsKey(Object key) 判断集合中是否包含指定的键。public SetK keySet(): 获取Map集合中所有的键存储到Set集合中。public SetMap.EntryK,V entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。 Map接口的方法演示 public class MapDemo {public static void main(String[] args) {//创建 map对象HashMapString, String map new HashMapString, String();//添加元素到集合map.put(黄晓明, 杨颖);map.put(文章, 马伊琍);map.put(邓超, 孙俪);System.out.println(map);//String remove(String key)System.out.println(map.remove(邓超));System.out.println(map);// 想要查看 黄晓明的媳妇 是谁System.out.println(map.get(黄晓明));System.out.println(map.get(邓超)); } }tips: 使用put方法时若指定的键(key)在集合中没有则没有这个键对应的值返回null并把指定的键值添加到集合中 若指定的键(key)在集合中存在则返回值为集合中键对应的值该值为替换前的值并把指定键所对应的值替换成指定的新值。 1.4 Map集合遍历键找值方式 键找值方式即通过元素中的键获取键所对应的值 分析步骤 获取Map中所有的键由于键是唯一的所以返回一个Set集合存储所有的键。方法提示:keyset()遍历键的Set集合得到每一个键。根据键获取键所对应的值。方法提示:get(K key) 代码演示 public class MapDemo01 {public static void main(String[] args) {//创建Map集合对象 HashMapString, String map new HashMapString,String();//添加元素到集合 map.put(胡歌, 霍建华);map.put(郭德纲, 于谦);map.put(薛之谦, 大张伟);//获取所有的键 获取键集SetString keys map.keySet();// 遍历键集 得到 每一个键for (String key : keys) {//key 就是键//获取对应值String value map.get(key);System.out.println(key的CP是value);} } }遍历图解 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoUCtzHh-1572792710985)(img\Map集合遍历方式一.bmp)] 1.5 Entry键值对对象 我们已经知道Map中存放的是两种对象一种称为key(键)一种称为value(值)它们在在Map中是一一对应关系这一对对象又称做Map中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象这样我们在遍历Map集合时就可以从每一个键值对Entry对象中获取对应的键与对应的值。 既然Entry表示了一对键和值那么也同样提供了获取对应键和对应值得方法 public K getKey()获取Entry对象中的键。public V getValue()获取Entry对象中的值。 在Map集合中也提供了获取所有Entry对象的方法 public SetMap.EntryK,V entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。 1.6 Map集合遍历键值对方式 键值对方式即通过集合中每个键值对(Entry)对象获取键值对(Entry)对象中的键与值。 操作步骤与图解 获取Map集合中所有的键值对(Entry)对象以Set集合形式返回。方法提示:entrySet()。 遍历包含键值对(Entry)对象的Set集合得到每一个键值对(Entry)对象。 通过键值对(Entry)对象获取Entry对象中的键与值。 方法提示:getkey() getValue() public class MapDemo02 {public static void main(String[] args) {// 创建Map集合对象 HashMapString, String map new HashMapString,String();// 添加元素到集合 map.put(胡歌, 霍建华);map.put(郭德纲, 于谦);map.put(薛之谦, 大张伟);// 获取 所有的 entry对象 entrySetSetEntryString,String entrySet map.entrySet();// 遍历得到每一个entry对象for (EntryString, String entry : entrySet) {// 解析 String key entry.getKey();String value entry.getValue(); System.out.println(key的CP是:value);}} }遍历图解 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jf2P4n8P-1572792710986)(img\Map集合遍历方式二.bmp)] tipsMap集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。 1.7 HashMap存储自定义类型键值 练习每位学生姓名年龄都有自己的家庭住址。那么既然有对应关系则将学生对象和家庭住址存储到map集合中。学生作为键, 家庭住址作为值。 注意学生姓名相同并且年龄相同视为同一名学生。 编写学生类 public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic boolean equals(Object o) {if (this o)return true;if (o null || getClass() ! o.getClass())return false;Student student (Student) o;return age student.age Objects.equals(name, student.name);}Overridepublic int hashCode() {return Objects.hash(name, age);} }编写测试类 public class HashMapTest {public static void main(String[] args) {//1,创建Hashmap集合对象。MapStudent,Stringmap new HashMapStudent,String();//2,添加元素。map.put(newStudent(lisi,28), 上海);map.put(newStudent(wangwu,22), 北京);map.put(newStudent(zhaoliu,24), 成都);map.put(newStudent(zhouqi,25), 广州);map.put(newStudent(wangwu,22), 南京);//3,取出元素。键找值方式SetStudentkeySet map.keySet();for(Student key: keySet){Stringvalue map.get(key);System.out.println(key.toString().....value);}} }当给HashMap中存放自定义对象时如果自定义对象作为key存在这时要保证对象唯一必须复写对象的hashCode和equals方法(如果忘记请回顾HashSet存放自定义对象)。如果要保证map中存放的key和取出的顺序一致可以使用java.util.LinkedHashMap集合来存放。 1.8 LinkedHashMap 我们知道HashMap保证成对元素唯一并且查询速度很快可是成对元素存放进去是没有顺序的那么我们要保证有序还要速度快怎么办呢 在HashMap下面有一个子类LinkedHashMap它是链表和哈希表组合的一个数据存储结构。 public class LinkedHashMapDemo {public static void main(String[] args) {LinkedHashMapString, String map new LinkedHashMapString, String();map.put(邓超, 孙俪);map.put(李晨, 范冰冰);map.put(刘德华, 朱丽倩);SetEntryString, String entrySet map.entrySet();for (EntryString, String entry : entrySet) {System.out.println(entry.getKey() entry.getValue());}} }结果: 邓超 孙俪 李晨 范冰冰 刘德华 朱丽倩1.9 Map集合练习 需求 计算一个字符串中每个字符出现次数。 分析 获取一个字符串对象创建一个Map集合键代表字符值代表次数。遍历字符串得到每个字符。判断Map中是否有该键。如果没有第一次出现存储次数为1如果有则说明已经出现过获取到对应的值进行再次存储。打印最终结果 代码 public class MapTest { public static void main(String[] args) {//友情提示System.out.println(请录入一个字符串:);String line new Scanner(System.in).nextLine();// 定义 每个字符出现次数的方法findChar(line);}private static void findChar(String line) {//1:创建一个集合 存储 字符 以及其出现的次数HashMapCharacter, Integer map new HashMapCharacter, Integer();//2:遍历字符串for (int i 0; i line.length(); i) {char c line.charAt(i);//判断 该字符 是否在键集中if (!map.containsKey(c)) {//说明这个字符没有出现过//那就是第一次map.put(c, 1);} else {//先获取之前的次数Integer count map.get(c);//count;//再次存入 更新map.put(c, count);}}System.out.println(map);} }第二章 补充知识点 2.1 JDK9对集合添加的优化 通常我们在代码中创建一个集合例如List 或 Set 并直接用一些元素填充它。 实例化集合几个 add方法 调用使得代码重复。 public class Demo01 {public static void main(String[] args) {ListString list new ArrayList();list.add(abc);list.add(def);list.add(ghi);System.out.println(list);} }Java 9添加了几种集合工厂方法,更方便创建少量元素的集合、map实例。新的List、Set、Map的静态工厂方法可以更方便地创建集合的不可变实例。 例子 public class HelloJDK9 { public static void main(String[] args) { SetString str1Set.of(a,b,c); //str1.add(c);这里编译的时候不会错但是执行的时候会报错因为是不可变的集合 System.out.println(str1); MapString,Integer str2Map.of(a,1,b,2); System.out.println(str2); ListString str3List.of(a,b); System.out.println(str3); } } 需要注意以下两点 1:of()方法只是MapListSet这三个接口的静态方法其父类接口和子类实现并没有这类方法比如 HashSetArrayList等待 2:返回的集合是不可变的 2.2 Debug追踪 使用IDEA的断点调试功能查看程序的运行过程 在有效代码行点击行号右边的空白区域设置断点程序执行到断点将停止我们可以手动来运行程序 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUlp60SA-1572792710987)(img/debug1.png)] 点击Debug运行模式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bKwZB8kA-1572792710987)(img\debug2.png)] 程序停止在断点上不再执行而IDEA最下方打开了Debug调试窗口 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gsQbieof-1572792710988)(img\debug3.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-amLEDbpn-1572792710988)(img\debug4.png)] Debug调试窗口介绍 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zv0EmhVO-1572792710989)(img\debug5.png)] 快捷键F8代码向下执行一行,第九行执行完毕执行到第10行第10行还未执行 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-et7KOpap-1572792710989)(img\debug6.png)] 切换到控制台面板控制台显示 请录入一个字符串 并且等待键盘录入 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xUojEPV3-1572792710990)(img\debug7.png)] 快捷键F8程序继续向后执行执行键盘录入操作在控制台录入数据 ababcea [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKar6DoD-1572792710990)(img\debug8.png)] 回车之后效果[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1KPS7SIg-1572792710991)(img\debug9.png)] 调试界面效果[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9UUGzd59-1572792710991)(img\debug0.png)] 此时到达findChar方法快捷键F7进入方法findChar [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJ9rtx2V-1572792710992)(img\debug11.png)] 快捷键F8 接续执行创建了map对象变量区域显示 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y0JjZlrF-1572792710994)(img\debug12.png)] 快捷键F8 接续执行进入到循环中循环变量i为 0,F8再继续执行就获取到变量c赋值为字符‘a’ 字节值97 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xeYdLkl-1572792710994)(img\debug13.png)] 快捷键F8 接续执行进入到判断语句中因为该字符 不在Map集合键集中再按F8执行进入该判断中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ox2TyQud-1572792710995)(img\debug14.png)] 快捷键F8 接续执行循环结束进入下次循环此时map中已经添加一对儿元素 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OF1xJAtk-1572792710995)(img\debug15.png)] 快捷键F8 接续执行进入下次循环再继续上面的操作我们就可以看到代码每次是如何执行的了 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0j35yWkI-1572792710995)(img\debug16.png)] 如果不想继续debug,那么可以使用快捷键F9,程序正常执行到结束程序结果在控制台显示 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxXfzWg1-1572792710996)(img\debug17.png)] 第三章 模拟斗地主洗牌发牌 3.1 案例介绍 按照斗地主的规则完成洗牌发牌的动作。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TQ1Kg1fi-1572792710997)(img\斗地主.png)] 具体规则 组装54张扑克牌将54张牌顺序打乱三个玩家参与游戏三人交替摸牌每人17张牌最后三张留作底牌。查看三人各自手中的牌按照牌的大小排序、底牌 规则手中扑克牌从大到小的摆放顺序大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3 3.2 案例需求分析 准备牌 完成数字与纸牌的映射关系 使用双列Map(HashMap)集合完成一个数字与字符串纸牌的对应关系(相当于一个字典)。 洗牌 通过数字完成洗牌发牌 发牌 将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌剩余牌通过对3取模依次发牌。 存放的过程中要求数字大小与斗地主规则的大小对应。 将代表不同纸牌的数字分配给不同的玩家与底牌。 看牌 通过Map集合找到对应字符展示。 通过查询纸牌与数字的对应关系由数字转成纸牌字符串再进行展示。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKfoptnx-1572792710997)(img\斗地主分析.png)] 3.3 实现代码步骤 public class Poker {public static void main(String[] args) {/** 1组装54张扑克牌*/// 1.1 创建Map集合存储HashMapInteger, String pokerMap new HashMapInteger, String();// 1.2 创建 花色集合 与 数字集合ArrayListString colors new ArrayListString();ArrayListString numbers new ArrayListString();// 1.3 存储 花色 与数字Collections.addAll(colors, ♦, ♣, ♥, ♠);Collections.addAll(numbers, 2, A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3);// 设置 存储编号变量int count 1;pokerMap.put(count, 大王);pokerMap.put(count, 小王);// 1.4 创建牌 存储到map集合中for (String number : numbers) {for (String color : colors) {String card color number;pokerMap.put(count, card);}}/** 2 将54张牌顺序打乱*/// 取出编号 集合SetInteger numberSet pokerMap.keySet();// 因为要将编号打乱顺序 所以 应该先进行转换到 list集合中ArrayListInteger numberList new ArrayListInteger();numberList.addAll(numberSet);// 打乱顺序Collections.shuffle(numberList);// 3 完成三个玩家交替摸牌每人17张牌最后三张留作底牌// 3.1 发牌的编号// 创建三个玩家编号集合 和一个 底牌编号集合ArrayListInteger noP1 new ArrayListInteger();ArrayListInteger noP2 new ArrayListInteger();ArrayListInteger noP3 new ArrayListInteger();ArrayListInteger dipaiNo new ArrayListInteger();// 3.2发牌的编号for (int i 0; i numberList.size(); i) {// 获取该编号Integer no numberList.get(i);// 发牌// 留出底牌if (i 51) {dipaiNo.add(no);} else {if (i % 3 0) {noP1.add(no);} else if (i % 3 1) {noP2.add(no);} else {noP3.add(no);}}}// 4 查看三人各自手中的牌按照牌的大小排序、底牌// 4.1 对手中编号进行排序Collections.sort(noP1);Collections.sort(noP2);Collections.sort(noP3);Collections.sort(dipaiNo);// 4.2 进行牌面的转换// 创建三个玩家牌面集合 以及底牌牌面集合ArrayListString player1 new ArrayListString();ArrayListString player2 new ArrayListString();ArrayListString player3 new ArrayListString();ArrayListString dipai new ArrayListString();// 4.3转换for (Integer i : noP1) {// 4.4 根据编号找到 牌面 pokerMapString card pokerMap.get(i);// 添加到对应的 牌面集合中player1.add(card);}for (Integer i : noP2) {String card pokerMap.get(i);player2.add(card);}for (Integer i : noP3) {String card pokerMap.get(i);player3.add(card);}for (Integer i : dipaiNo) {String card pokerMap.get(i);dipai.add(card);}//4.5 查看System.out.println(令狐冲player1);System.out.println(石破天player2);System.out.println(鸠摩智player3);System.out.println(底牌dipai);} }
http://www.huolong8.cn/news/304087/

相关文章:

  • 建设兼职网站目的福州城市建设规划网站
  • 泰州住房和城乡建设厅网站首页辽宁个人网站建设口碑推荐
  • 网站建设的制度开发网站开始的工作
  • 怎么给网站制作二维码微信小程序开发300元
  • 做h的小说网站婚恋网站怎么做
  • 河南网站建设运营域名注册公司公司网站开发项目管理制度
  • 手机怎么浏览国外网站个人承接网站开发项目
  • 物流企业网站建设步骤移动端模板 wordpress
  • 北安网站设计网站一年的费用
  • 万网影合肥seo代理商
  • 网站结构的规划与设计购买网站建设需要注意
  • 现在能用的网站网站用什么技术实现
  • 怀柔手机网站建设安徽省建设安全协会网站
  • 外国人做的古文字网站深圳seo外包
  • 获取网站访客信息促销策划
  • 金乡网站建设富阳网站公司
  • 淄博网站制作网络丰富广州建设网站的公司简介
  • wordpress网站使用wordpress meta key
  • 怎么做可以看外国视频网站南阳做网站公司哪家好
  • 大学专业宣传网站开发课题意义wordpress 多地址插件
  • 太原网站建设包括什么一级a做爰片2202网站
  • wordpress全站关闭评论自己做免费网站的流程
  • 汽车技术资料网站建设触屏版网站设计
  • 个人网站建设的背景优秀营销软文范例800字
  • 信用泰安网站河南省建设厅厅长
  • 建设网站怎样提要求百度人气榜
  • wordpress 设置分页显示条数什么叫优化
  • 做企业网站收费秦皇岛app开发公司
  • 广州网站建设 骏域网站建设专家芜湖市建设厅网站
  • 某绿色园林企业网站源码六安网站价格