“商苑面馆:Java HashMap”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
 
第26行: 第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();
        
        
    }


运行结果

Java5-5.png

源代码:

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

}