“商苑面馆:Java HashMap”的版本间的差异
来自CloudWiki
(未显示同一用户的2个中间版本) | |||
第11行: | 第11行: | ||
//删除元素 | //删除元素 | ||
map.remove("03"); | map.remove("03"); | ||
− | System.out.println(" | + | System.out.println("字典中是否包含 \"java 语言程序设计\" :"+map.containsKey("03")); |
//修改元素的值 | //修改元素的值 | ||
map.put("02", "平凡的世界"); | map.put("02", "平凡的世界"); | ||
− | System.out.println(" | + | System.out.println("字典中是否包含 \"java 讲义\" :"+map.containsValue("java 讲义")); |
− | // | + | //获取字典中的元素 |
System.out.println("编号02的名称为:"+map.get("02")); | System.out.println("编号02的名称为:"+map.get("02")); | ||
− | + | ||
− | + | //HashMap遍历 | |
− | + | // 先获取map集合的所有键的set集合,keyset() | |
− | + | Set<String> keys = map.keySet(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
System.out.println("编号\t书名"); | System.out.println("编号\t书名"); | ||
System.out.println("***********************"); | System.out.println("***********************"); | ||
第34行: | 第26行: | ||
for (String key : keys) | for (String key : keys) | ||
System.out.println(key + "\t" + map.get(key)); | System.out.println(key + "\t" + map.get(key)); | ||
+ | }</nowiki> | ||
+ | |||
+ | ==面馆实训== | ||
+ | ===新建食物仓库类FoodDao5=== | ||
+ | |||
+ | 现在,我们在原先的项目中,新建立一个类FoodDao5,表示食物仓库:这个类的成员变量只有一个——一个命名为n、成员类型为Food的HashMap。我们用它来表示我们面馆里所有食物。 | ||
+ | |||
+ | |||
+ | <nowiki>public class FoodDao5 { | ||
+ | private HashMap<String,Food> n;//食物数组 | ||
+ | |||
+ | public FoodDao5(HashMap<String,Food> n ){ | ||
+ | this.n = n; | ||
+ | |||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | ===新建search方法和toString方法=== | ||
+ | 在FoodDao5里面新建search方法和toString方法 | ||
+ | |||
+ | search方法表示在类中寻找特定的商品 | ||
+ | |||
+ | toString方法表示把整个仓库中的商品清单以字符串的形式展示出来。 | ||
+ | |||
+ | 这两个方法功能和上一个实训的同名方法相同,只不过具体实现换成了HashMap. | ||
+ | |||
+ | <nowiki> | ||
+ | //按名称搜 | ||
+ | public Food search(String s){ | ||
+ | // 先获取map集合的所有键的set集合,keyset() | ||
+ | Set<String> keys = n.keySet(); | ||
+ | |||
+ | //遍历keyset,通过map.get(key)方法获得value的值 | ||
+ | for (String key : keys) { | ||
+ | if(n.get(key).getName().equals(s)){ | ||
+ | return n.get(key); | ||
+ | //通过map.get(key)方法获得value的值,返回的值是Food类型 | ||
+ | //用Food类型自带的getName()方法去与字符串s 比较, | ||
+ | //如果相等,说明特定类型的商品找到了 | ||
+ | } | ||
+ | } | ||
+ | return null; | ||
+ | //return new Noodle(); | ||
+ | } | ||
+ | |||
+ | public String toString(){ | ||
+ | String s=""; | ||
+ | // 先获取map集合的所有键的set集合,keyset() | ||
+ | Set<String> keys = n.keySet(); | ||
+ | |||
+ | //遍历keyset,通过map.get(key)方法获得value的值 | ||
+ | for (String key : keys) | ||
+ | s += n.get(key).toString()+"\r\n"; | ||
+ | |||
+ | return s; | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ===编写测试用的main方法=== | ||
+ | main方法的代码主要包含: | ||
+ | |||
+ | *数组初始化 | ||
+ | *接收用户输入 | ||
+ | *调用FoodDao的方法 | ||
+ | |||
+ | <nowiki>public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | |||
+ | //数组初始化 | ||
+ | HashMap<String,Food> al = new HashMap<>();;//新建一个数组列表 | ||
+ | Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); | ||
+ | Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); | ||
+ | //Food f2 = new Rice("牛肉盖浇饭",3,2); | ||
+ | Food f3 = new Noodle("刀削面",10.0,5,"微辣"); | ||
+ | al.put("炸酱面", f1); | ||
+ | al.put("臊子面", f2); | ||
+ | al.put("刀削面", f3); | ||
+ | |||
+ | FoodDao5 f = new FoodDao5(al);//用数组列表f初始化食物仓库foodset | ||
+ | System.out.println(f.toString());//调用toString方法 | ||
+ | |||
+ | //接收用户输入 | ||
+ | Scanner scan = new Scanner(System.in); | ||
+ | System.out.println("您想点什么餐品?"); | ||
+ | String meal = scan.next(); | ||
+ | System.out.println("输入的数据为:" + meal); | ||
+ | |||
+ | //按名称搜索,调用search方法 | ||
+ | Food n01 = f.search(meal); | ||
+ | if(n01 != null) { | ||
+ | System.out.println("餐品详细信息为:"+n01.toString()); | ||
+ | System.out.println("请付钱!"); | ||
+ | }else { | ||
+ | System.out.println("对不起,我们店现在没有这种面"); | ||
+ | } | ||
+ | |||
+ | scan.close(); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | </nowiki> | ||
+ | |||
+ | ==运行结果== | ||
+ | [[文件:java5-5.png]] | ||
+ | |||
+ | 源代码: | ||
+ | |||
+ | <nowiki>import java.util.*; | ||
+ | |||
+ | import entity.*; | ||
+ | |||
+ | public class FoodDao5 { | ||
+ | //private Food[] n;//食物数组 | ||
+ | private HashMap<String,Food> n;//食物数组 | ||
+ | |||
+ | public FoodDao5(HashMap<String,Food> n ){ | ||
+ | this.n = n; | ||
+ | |||
+ | } | ||
+ | //按名称搜 | ||
+ | public Food search(String s){ | ||
+ | // 先获取map集合的所有键的set集合,keyset() | ||
+ | Set<String> keys = n.keySet(); | ||
+ | |||
+ | //遍历keyset,通过map.get(key)方法获得value的值 | ||
+ | for (String key : keys) { | ||
+ | if(n.get(key).getName().equals(s)){ | ||
+ | return n.get(key); | ||
+ | //通过map.get(key)方法获得value的值,返回的值是Food类型 | ||
+ | //用Food类型自带的getName()方法去与字符串s 比较, | ||
+ | //如果相等,说明特定类型的商品找到了 | ||
+ | } | ||
+ | } | ||
+ | return null; | ||
+ | //return new Noodle(); | ||
+ | } | ||
+ | |||
+ | public String toString(){ | ||
+ | String s=""; | ||
+ | // 先获取map集合的所有键的set集合,keyset() | ||
+ | Set<String> keys = n.keySet(); | ||
+ | |||
+ | //遍历keyset,通过map.get(key)方法获得value的值 | ||
+ | for (String key : keys) | ||
+ | s += n.get(key).toString()+"\r\n"; | ||
+ | |||
+ | return s; | ||
+ | } | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | |||
+ | //数组初始化 | ||
+ | HashMap<String,Food> al = new HashMap<>();;//新建一个数组列表 | ||
+ | Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); | ||
+ | Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); | ||
+ | //Food f2 = new Rice("牛肉盖浇饭",3,2); | ||
+ | Food f3 = new Noodle("刀削面",10.0,5,"微辣"); | ||
+ | al.put("炸酱面", f1); | ||
+ | al.put("臊子面", f2); | ||
+ | al.put("刀削面", f3); | ||
+ | |||
+ | FoodDao5 f = new FoodDao5(al);//用数组列表f初始化食物仓库foodset | ||
+ | System.out.println(f.toString());//调用toString方法 | ||
+ | |||
+ | //接收用户输入 | ||
+ | Scanner scan = new Scanner(System.in); | ||
+ | System.out.println("您想点什么餐品?"); | ||
+ | String meal = scan.next(); | ||
+ | System.out.println("输入的数据为:" + meal); | ||
+ | |||
+ | //按名称搜索,调用search方法 | ||
+ | Food n01 = f.search(meal); | ||
+ | if(n01 != null) { | ||
+ | System.out.println("餐品详细信息为:"+n01.toString()); | ||
+ | System.out.println("请付钱!"); | ||
+ | }else { | ||
+ | System.out.println("对不起,我们店现在没有这种面"); | ||
+ | } | ||
+ | |||
+ | scan.close(); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
}</nowiki> | }</nowiki> |
2019年4月22日 (一) 04:28的最新版本
目录
HashMap
HashMap简单应用
public static void main(String[] args) { Map<String, String> map = new HashMap<>(); //添加元素 map.put("01", "Think in java"); map.put("02", "java 讲义"); map.put("03", "java 语言程序设计"); map.put("04", "疯狂java讲义"); //删除元素 map.remove("03"); System.out.println("字典中是否包含 \"java 语言程序设计\" :"+map.containsKey("03")); //修改元素的值 map.put("02", "平凡的世界"); System.out.println("字典中是否包含 \"java 讲义\" :"+map.containsValue("java 讲义")); //获取字典中的元素 System.out.println("编号02的名称为:"+map.get("02")); //HashMap遍历 // 先获取map集合的所有键的set集合,keyset() Set<String> keys = map.keySet(); System.out.println("编号\t书名"); System.out.println("***********************"); //遍历keyset,通过map.get(key)方法获得value的值 for (String key : keys) System.out.println(key + "\t" + map.get(key)); }
面馆实训
新建食物仓库类FoodDao5
现在,我们在原先的项目中,新建立一个类FoodDao5,表示食物仓库:这个类的成员变量只有一个——一个命名为n、成员类型为Food的HashMap。我们用它来表示我们面馆里所有食物。
public class FoodDao5 { private HashMap<String,Food> n;//食物数组 public FoodDao5(HashMap<String,Food> n ){ this.n = n; public static void main(String[] args) { // TODO Auto-generated method stub } }
新建search方法和toString方法
在FoodDao5里面新建search方法和toString方法
search方法表示在类中寻找特定的商品
toString方法表示把整个仓库中的商品清单以字符串的形式展示出来。
这两个方法功能和上一个实训的同名方法相同,只不过具体实现换成了HashMap.
//按名称搜 public Food search(String s){ // 先获取map集合的所有键的set集合,keyset() Set<String> keys = n.keySet(); //遍历keyset,通过map.get(key)方法获得value的值 for (String key : keys) { if(n.get(key).getName().equals(s)){ return n.get(key); //通过map.get(key)方法获得value的值,返回的值是Food类型 //用Food类型自带的getName()方法去与字符串s 比较, //如果相等,说明特定类型的商品找到了 } } return null; //return new Noodle(); } public String toString(){ String s=""; // 先获取map集合的所有键的set集合,keyset() Set<String> keys = n.keySet(); //遍历keyset,通过map.get(key)方法获得value的值 for (String key : keys) s += n.get(key).toString()+"\r\n"; return s; }
编写测试用的main方法
main方法的代码主要包含:
- 数组初始化
- 接收用户输入
- 调用FoodDao的方法
public static void main(String[] args) { // TODO Auto-generated method stub //数组初始化 HashMap<String,Food> al = new HashMap<>();;//新建一个数组列表 Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); //Food f2 = new Rice("牛肉盖浇饭",3,2); Food f3 = new Noodle("刀削面",10.0,5,"微辣"); al.put("炸酱面", f1); al.put("臊子面", f2); al.put("刀削面", f3); FoodDao5 f = new FoodDao5(al);//用数组列表f初始化食物仓库foodset System.out.println(f.toString());//调用toString方法 //接收用户输入 Scanner scan = new Scanner(System.in); System.out.println("您想点什么餐品?"); String meal = scan.next(); System.out.println("输入的数据为:" + meal); //按名称搜索,调用search方法 Food n01 = f.search(meal); if(n01 != null) { System.out.println("餐品详细信息为:"+n01.toString()); System.out.println("请付钱!"); }else { System.out.println("对不起,我们店现在没有这种面"); } scan.close(); }
运行结果
源代码:
import java.util.*; import entity.*; public class FoodDao5 { //private Food[] n;//食物数组 private HashMap<String,Food> n;//食物数组 public FoodDao5(HashMap<String,Food> n ){ this.n = n; } //按名称搜 public Food search(String s){ // 先获取map集合的所有键的set集合,keyset() Set<String> keys = n.keySet(); //遍历keyset,通过map.get(key)方法获得value的值 for (String key : keys) { if(n.get(key).getName().equals(s)){ return n.get(key); //通过map.get(key)方法获得value的值,返回的值是Food类型 //用Food类型自带的getName()方法去与字符串s 比较, //如果相等,说明特定类型的商品找到了 } } return null; //return new Noodle(); } public String toString(){ String s=""; // 先获取map集合的所有键的set集合,keyset() Set<String> keys = n.keySet(); //遍历keyset,通过map.get(key)方法获得value的值 for (String key : keys) s += n.get(key).toString()+"\r\n"; return s; } public static void main(String[] args) { // TODO Auto-generated method stub //数组初始化 HashMap<String,Food> al = new HashMap<>();;//新建一个数组列表 Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); //Food f2 = new Rice("牛肉盖浇饭",3,2); Food f3 = new Noodle("刀削面",10.0,5,"微辣"); al.put("炸酱面", f1); al.put("臊子面", f2); al.put("刀削面", f3); FoodDao5 f = new FoodDao5(al);//用数组列表f初始化食物仓库foodset System.out.println(f.toString());//调用toString方法 //接收用户输入 Scanner scan = new Scanner(System.in); System.out.println("您想点什么餐品?"); String meal = scan.next(); System.out.println("输入的数据为:" + meal); //按名称搜索,调用search方法 Food n01 = f.search(meal); if(n01 != null) { System.out.println("餐品详细信息为:"+n01.toString()); System.out.println("请付钱!"); }else { System.out.println("对不起,我们店现在没有这种面"); } scan.close(); } }