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

网站建设制作ppt东莞网站建设图表

网站建设制作ppt,东莞网站建设图表,常熟做网站多少钱,深圳云购网站制作为什么使用Map 我们知道#xff0c;List是一种顺序列表#xff0c;如果有一个存储学生Student实例的List#xff0c;要在List中根据name查找某个指定的Student的分数#xff0c;应该怎么办#xff1f; 最简单的方法是遍历List并判断name是否相等#xff0c;然后返回指定…为什么使用Map 我们知道List是一种顺序列表如果有一个存储学生Student实例的List要在List中根据name查找某个指定的Student的分数应该怎么办 最简单的方法是遍历List并判断name是否相等然后返回指定元素 ListStudent list ... Student target null; for (Student s : list) {if (Xiao Ming.equals(s.name)) {target s;break;} } System.out.println(target.score);这种需求其实非常常见即通过一个键去查询对应的值。使用List来实现存在效率非常低的问题因为平均需要扫描一半的元素才能确定而Map这种键值key-value映射表的数据结构作用就是能高效通过key快速查找value元素。 用Map来实现根据name查询某个Student的代码如下 import java.util.HashMap; import java.util.Map; public class Main {public static void main(String[] args) {Student s new Student(Xiao Ming, 99);MapString, Student map new HashMap();map.put(Xiao Ming, s); // 将Xiao Ming和Student实例映射并关联Student target map.get(Xiao Ming); // 通过key查找并返回映射的Student实例System.out.println(target s); // true同一个实例System.out.println(target.score); // 99Student another map.get(Bob); // 通过另一个key查找System.out.println(another); // 未找到返回null} }class Student {public String name;public int score;public Student(String name, int score) {this.name name;this.score score;} } 通过上述代码可知MapK, V是一种键-值映射表当我们调用put(K key, V value)方法时就把key和value做了映射并放入Map。当我们调用V get(K key)时就可以通过key获取到对应的value。如果key不存在则返回null。和List类似Map也是一个接口最常用的实现类是HashMap。 如果只是想查询某个key是否存在可以调用boolean containsKey(K key)方法。 如果我们在存储Map映射关系的时候对同一个key调用两次put()方法分别放入不同的value会有什么问题呢例如 import java.util.HashMap; import java.util.Map; public class Main {public static void main(String[] args) {MapString, Integer map new HashMap();map.put(apple, 123);map.put(pear, 456);System.out.println(map.get(apple)); // 123map.put(apple, 789); // 再次放入apple作为key但value变为789System.out.println(map.get(apple)); // 789} } 重复放入key-value并不会有任何问题但是一个key只能关联一个value。在上面的代码中一开始我们把key对象apple映射到Integer对象123然后再次调用put()方法把apple映射到789这时原来关联的value对象123就被“冲掉”了。实际上put()方法的签名是V put(K key, V value)如果放入的key已经存在put()方法会返回被删除的旧的value否则返回null。 始终牢记Map中不存在重复的key因为放入相同的key只会把原有的key-value对应的value给替换掉。 此外在一个Map中虽然key不能重复但value是可以重复的 MapString, Integer map new HashMap(); map.put(apple, 123); map.put(pear, 123); // ok遍历Map 对Map来说要遍历key可以使用for each循环遍历Map实例的keySet()方法返回的Set集合它包含不重复的key的集合 import java.util.HashMap; import java.util.Map; public class Main {public static void main(String[] args) {MapString, Integer map new HashMap();map.put(apple, 123);map.put(pear, 456);map.put(banana, 789);for (String key : map.keySet()) {Integer value map.get(key);System.out.println(key value);}} }Run 同时遍历key和value可以使用for each循环遍历Map对象的entrySet()集合它包含每一个key-value映射import java.util.HashMap; import java.util.Map; public class Main {public static void main(String[] args) {MapString, Integer map new HashMap();map.put(apple, 123);map.put(pear, 456);map.put(banana, 789);for (Map.EntryString, Integer entry : map.entrySet()) {String key entry.getKey();Integer value entry.getValue();System.out.println(key value);}} } Map和List不同的是Map存储的是key-value的映射关系并且它不保证顺序。在遍历的时候遍历的顺序既不一定是put()时放入的key的顺序也不一定是key的排序顺序。使用Map时任何依赖顺序的逻辑都是不可靠的。以HashMap为例假设我们放入ABC这3个key遍历的时候每个key会保证被遍历一次且仅遍历一次但顺序完全没有保证甚至对于不同的JDK版本相同的代码遍历的输出顺序都是不同的 遍历Map时不可假设输出的key是有序的 练习 请编写一个根据name查找score的程序并利用Map充当缓存以提高查找效率 import java.util.*; public class Main {public static void main(String[] args) {ListStudent list List.of(new Student(Bob, 78),new Student(Alice, 85),new Student(Brush, 66),new Student(Newton, 99));var holder new Students(list);System.out.println(holder.getScore(Bob) 78 ? 测试成功! : 测试失败!);System.out.println(holder.getScore(Alice) 85 ? 测试成功! : 测试失败!);System.out.println(holder.getScore(Tom) -1 ? 测试成功! : 测试失败!);} }class Students {ListStudent list;MapString, Integer cache;Students(ListStudent list) {this.list list;cache new HashMap();}/*** 根据name查找score找到返回score未找到返回-1*/int getScore(String name) {// 先在Map中查找:Integer score this.cache.get(name);if (score null) {// TODO:}return score null ? -1 : score.intValue();}Integer findInList(String name) {for (var ss : this.list) {if (ss.name.equals(name)) {return ss.score;}}return null;} }class Student {String name;int score;Student(String name, int score) {this.name name;this.score score;} }小结 Map 是一种映射表可以通过key快速查找value。 可以通过for each遍历keySet()也可以通过for each遍历entrySet()直接获取key-value。 最常用的一种Map实现是HashMap。
http://www.pierceye.com/news/964827/

相关文章:

  • 培训网站项目ppt怎么做wordpress主题4mudi
  • 上海专业网站建设市场网站开发验收报告
  • 怎么做网站视频教程做广告牌子
  • 合肥做网站公网站设网页设计
  • 罗田做网站凡科网小程序
  • 玻璃钢产品哪个网站做推广好.加强网站安全建设
  • 扬州公司网站建设网络建设与管理包括哪些方面
  • 我的网站域名福州网站的优化
  • 威海市网站建设微信在线登录平台
  • 2014网站设计成都网站设计合理柚v米科技
  • 建设自己网站需要多钱网站规划与设计就业
  • 用flash做的网站欣赏手机网站图片切换jquery
  • 昆明做网站seo网站推广策略什么时候
  • 网站添加 百度商桥wordpress 友情链接 代码
  • 一鸿建设设计网站百家号排名
  • 网站最新一次改版时间什么意思电商平台应该如何推广
  • 网站设计制作程序网站开发列表
  • 企业网站建设需要哪些费用做算法的网站
  • 很大气的网站 营销js特效网站展示
  • 南宁建站程序成都新线加网站建设
  • 用微软雅黑做网站可以吗wordpress游客发帖插件
  • 网站备案怎样提交管局网页电商设计
  • 郑州华恩科技做网站怎么样网络竞价推广托管公司
  • 都江堰住房和城乡建设厅网站哈尔滨网站建设方案维护
  • 九江网站网站建设原始传奇经典复古
  • 宽屏营销型网站源码安微省住房和城乡建设厅网站
  • 做暖视频网站免费搜索引擎营销的模式有
  • 网站建设需要的条件榆林北京网站建设
  • 分类信息网站推广的意义wordpress安装教程wamp
  • 免费自助建站全系统建设银行永泰支行网站