如何在Java中创建关联列表?

Zac*_*ano 3 java list hashmap

我试图让用户输入a String来搜索列表中的值.这工作正常,但我也希望String有一个数值.这样我就可以在列表价格中获得特定项目.我试过了:

public List<String, double>
Run Code Online (Sandbox Code Playgroud)

然而,这总是给我一个错误.如何存储字符串及其相应的数值?

FTh*_*son 9

使用地图.

Map<String, Double> someMap = new HashMap<String, Double>();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Map#put(K, V)Map#get(K)来放置和获取值.

查看Map文档.

从Java 7开始,您可以在构造函数的声明中省略泛型类型:

Map<String, Double> someMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)


wat*_*ios 5

您只存储a String和a Double,还是最终需要存储有关每个对象的更多信息?

例如,您正在谈论存储名称和价格.如果这是一个类似购物的程序,你可能最好将每个产品的所有信息存储在一个新类中,然后将该类存储在HashMap.例如..

// Class for your product and all related information...
public class Product {
    String name;
    double price;
    String color;
    double weight;

    public Product(String name, double price, String color, double weight){
        this.name = name;
        this.price = price;
        this.color = color;
        this.weight = weight;
    }
}

// Now add each Product to a HashMap (in your main class)...
HashMap<String,Product> products = new HashMap<String,Product>();
products.put("Cheese", new Product("Cheese",1.10,"Yellow",0.5);
products.put("Milk", new Product("Milk",2.0,"White",1.5);
Run Code Online (Sandbox Code Playgroud)

然后,您将能够查询HashMapfor "Cheese",您将获得Product它的所有信息......

Product cheese = products.get("Cheese");
double price = cheese.getPrice();
Run Code Online (Sandbox Code Playgroud)