新建hashmap时初始化hashmap
时间: 2023-08-01 21:15:45 浏览: 96
HashMap在初始化时,尽量指定初始值大小,可以避免在后续操作中频繁扩容,提高HashMap的性能。因为HashMap内部是通过数组实现的,如果数组长度不够,就需要进行扩容操作,这个操作会导致重新计算hash值,重新分配数组空间,复制原有元素等操作,非常耗费时间和资源。因此,指定初始值大小可以避免这种情况的发生,提高HashMap的效率。
相关问题
新建hashmap时初始化hashmap,往里面put值
当你创建一个HashMap并初始化它时,你可以使用以下方式将键值对放入HashMap中:
```java
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
// 使用put方法将键值对放入HashMap
hashMap.put("key1", 1);
hashMap.put("key2", 2);
hashMap.put("key3", 3);
// 打印HashMap中的值
System.out.println(hashMap);
}
}
```
在这个示例中,我们首先创建了一个HashMap对象,并使用`put`方法将键值对放入HashMap中。键是字符串类型,值是整数类型。然后,我们打印HashMap中的值,输出为`{key1=1, key2=2, key3=3}`。
你可以根据需要重复使用`put`方法来添加更多的键值对到HashMap中。注意,如果你尝试使用相同的键来放入新的值,它将会覆盖之前的值。
希望这个示例可以帮助你理解如何创建并初始化HashMap,并往里面添加键值对。如果有任何疑问,请随时提问。
在本实验第2题的基础上设计一个图书购物车,存储用户购买图书的信息。能够打印出购物车中图书的信息,图书价格、小计和总的费用。用HashMap类模拟购物车。 实现思路指导: (1)新建图书类(Product),该步骤第2题已实现。 (2)新建BookShop类,该类实现对所购图书信息的封装。 (3)新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。 (4)新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。 (5)新建测试主类SY6_3_BuyCar。
好的,下面是对应的Java代码:
1. Product类
```java
public class Product {
private String id; //图书编号
private String name; //图书名称
private double price; //图书价格
public Product(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
```
2. BookShop类
```java
public class BookShop {
private Product product; //图书信息
private int quantity; //购买数量
public BookShop(Product product, int quantity) {
this.product = product;
this.quantity = quantity;
}
public Product getProduct() {
return product;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getSubtotal() {
return quantity * product.getPrice();
}
@Override
public String toString() {
return String.format("%s\t%s\t%.2f\t%d\t%.2f", product.getId(), product.getName(), product.getPrice(), quantity, getSubtotal());
}
}
```
3. BookStore类
```java
import java.util.ArrayList;
public class BookStore {
private ArrayList<Product> products;
public BookStore() {
products = new ArrayList<>();
products.add(new Product("001", "Java编程思想", 79.80));
products.add(new Product("002", "深入浅出MySQL", 44.00));
products.add(new Product("003", "Head First 设计模式", 89.00));
products.add(new Product("004", "算法导论", 105.00));
products.add(new Product("005", "从入门到精通Python", 68.00));
products.add(new Product("006", "大话数据结构", 49.00));
}
public Product getProductById(String id) {
for (Product product : products) {
if (product.getId().equals(id)) {
return product;
}
}
return null;
}
}
```
4. Customer类
```java
import java.util.HashMap;
public class Customer {
private String name; //顾客名称
private HashMap<String, BookShop> shoppingCart; //购物车
public Customer(String name) {
this.name = name;
shoppingCart = new HashMap<>();
}
public void addToCart(String id, int quantity, BookStore bookStore) {
Product product = bookStore.getProductById(id);
if (product == null) {
System.out.println("无效的编号!");
return;
}
if (shoppingCart.containsKey(id)) {
BookShop bookShop = shoppingCart.get(id);
bookShop.setQuantity(bookShop.getQuantity() + quantity);
} else {
shoppingCart.put(id, new BookShop(product, quantity));
}
System.out.println("成功添加到购物车!");
}
public void printShoppingCart() {
if (shoppingCart.isEmpty()) {
System.out.println("购物车为空!");
return;
}
System.out.println("购物车信息如下:");
System.out.println("编号\t名称\t单价\t数量\t小计");
double total = 0;
for (BookShop bookShop : shoppingCart.values()) {
System.out.println(bookShop);
total += bookShop.getSubtotal();
}
System.out.printf("总费用:%.2f\n", total);
}
}
```
5. SY6_3_BuyCar类
```java
public class SY6_3_BuyCar {
public static void main(String[] args) {
BookStore bookStore = new BookStore();
Customer customer1 = new Customer("张三");
customer1.addToCart("001", 2, bookStore);
customer1.addToCart("002", 1, bookStore);
Customer customer2 = new Customer("李四");
customer2.addToCart("002", 3, bookStore);
customer2.addToCart("004", 2, bookStore);
customer2.addToCart("006", 1, bookStore);
customer1.printShoppingCart();
customer2.printShoppingCart();
}
}
```
运行结果:
```
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
购物车信息如下:
编号 名称 单价 数量 小计
001 Java编程思想 79.80 2 159.60
002 深入浅出MySQL 44.00 1 44.00
总费用:203.60
购物车信息如下:
编号 名称 单价 数量 小计
002 深入浅出MySQL 44.00 3 132.00
004 算法导论 105.00 2 210.00
006 大话数据结构 49.00 1 49.00
总费用:391.00
```
阅读全文