Java 如何通过方法将项添加到HashMap中

Java 如何通过方法将项添加到HashMap中,java,hashmap,Java,Hashmap,我想通过以下方法将类DisplayCard中的一些项添加到hashMapdisplayCardMap。 hashmap的输出看起来像 品牌:型号:memorySize 然后我创造了一些方法来帮助我 import java.util.*; public class ComputerShop { Map <String, Double> displayCardMap = new HashMap <String, Double>(); public voi

我想通过以下方法将类
DisplayCard
中的一些项添加到hashMap
displayCardMap
。 hashmap的输出看起来像

品牌:型号:memorySize

然后我创造了一些方法来帮助我

import java.util.*;

public class ComputerShop {

    Map <String, Double> displayCardMap = new HashMap <String, Double>();

    public void addDisplayCard(DisplayCard oneDisplayCard){
        displayCardMap.put(oneDisplayCard.getBrand() + ": " + oneDisplayCard.getmodelNumber(), oneDisplayCard.getmemorySize());
    }
}

public class DisplayCard {
    String brand;
    String modelNumber;
    double memorySize;

    //constructor method
    public DisplayCard(String brand, String modelNumber, double memorySize){
        this.brand = brand;
        this.modelNumber = modelNumber;
        this.memorySize = memorySize;
    }

    // getter method
    public String getBrand(){
        return brand;
    }

    public String getmodelNumber(){
        return modelNumber;
    }

    public double getmemorySize(){
        return memorySize;
    }
 }
所以我想知道问题出在哪里。


我应该先创建一个新的
DisplayCard
对象吗?或者函数开始时出错。

您需要创建一个新的
DisplayCard
对象,因为您的方法需要一个:

public class TestComputerShop {
    public static void main(String[] args) {

        ComputerShop ashop = new ComputerShop();
        // call method
        ashop.addDisplayCard(new DisplayCard("ATI", "R9 390",6.0));

    } 
}
另一种解决方案是在
计算机商店
中使用方法重载:

public class ComputerShop {

    Map <String, Double> displayCardMap = new HashMap <String, Double>();

    public void addDisplayCard(DisplayCard oneDisplayCard){
        displayCardMap.put(oneDisplayCard.getBrand() + ": " + oneDisplayCard.getmodelNumber(), oneDisplayCard.getmemorySize());
    }

    public void addDisplayCard(String brand, String modelNumber, double memorySize){
        this.addDisplayCard(new DisplayCard(brand, modelNumber, memorySize));
    }
}
公共级计算机商店{
Map displayCardMap=newhashmap();
公共作废addDisplayCard(DisplayCard oneDisplayCard){
displayCardMap.put(oneDisplayCard.getBrand()+”:“+oneDisplayCard.getmodelNumber(),oneDisplayCard.getmemorySize());
}
public void addDisplayCard(字符串品牌、字符串型号、双存储器大小){
此.addDisplayCard(新的显示卡(品牌、型号、内存大小));
}
}

您需要创建一个新的
显示卡
对象,因为您的方法需要一个:

public class TestComputerShop {
    public static void main(String[] args) {

        ComputerShop ashop = new ComputerShop();
        // call method
        ashop.addDisplayCard(new DisplayCard("ATI", "R9 390",6.0));

    } 
}
另一种解决方案是在
计算机商店
中使用方法重载:

public class ComputerShop {

    Map <String, Double> displayCardMap = new HashMap <String, Double>();

    public void addDisplayCard(DisplayCard oneDisplayCard){
        displayCardMap.put(oneDisplayCard.getBrand() + ": " + oneDisplayCard.getmodelNumber(), oneDisplayCard.getmemorySize());
    }

    public void addDisplayCard(String brand, String modelNumber, double memorySize){
        this.addDisplayCard(new DisplayCard(brand, modelNumber, memorySize));
    }
}
公共级计算机商店{
Map displayCardMap=newhashmap();
公共作废addDisplayCard(DisplayCard oneDisplayCard){
displayCardMap.put(oneDisplayCard.getBrand()+”:“+oneDisplayCard.getmodelNumber(),oneDisplayCard.getmemorySize());
}
public void addDisplayCard(字符串品牌、字符串型号、双存储器大小){
此.addDisplayCard(新的显示卡(品牌、型号、内存大小));
}
}

addDisplayCard()
需要类型为displaycard的对象,并且您正在输入两个strings@AbhinavChauhan对,这是OOP的基础。我认为这个问题应该以琐碎和不值钱来结束我看不到琐碎和不值钱这样的选项非常感谢,我将努力学习OOP基础知识
addDisplayCard()
requires object of type display card,而您正在输入两个strings@AbhinavChauhan对,这是OOP的基础。我认为这个问题应该以琐碎和不值钱的方式来结束。我看不到琐碎和不值钱的选项。非常感谢,我会在面向对象的基础上努力工作。你可以将新方法与原来的方法解耦,如:
displayCardMap.put(brand+“:“+modelNumber,memorySize)我没有建议解耦,因为我不喜欢重复的代码:-)您可以将新方法与原始方法解耦为:
displayCardMap.put(brand+“:”+modelNumber,memorySize)我没有建议解耦,因为我不喜欢重复的代码:-)