新建hashmap时初始化hashmap
时间: 2023-08-01 09:15:45 浏览: 48
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。
以下是实现思路指导:
(1)新建图书类(Product),该步骤第2题已实现。
(2)新建BookShop类,该类实现对所购图书信息的封装。
```
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 void setProduct(Product product) {
this.product = product;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getSubTotal() {
return product.getPrice() * quantity;
}
@Override
public String toString() {
return "BookShop{" +
"product=" + product +
", quantity=" + quantity +
'}';
}
}
```
(3)新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。
```
import java.util.ArrayList;
import java.util.List;
public class BookStore {
private List<Product> products;
public BookStore() {
products = new ArrayList<>();
products.add(new Product(1, "Java编程思想", "Bruce Eckel", 89.0));
products.add(new Product(2, "Java核心技术卷I", "Cay S. Horstmann", 76.5));
products.add(new Product(3, "Java核心技术卷II", "Cay S. Horstmann", 73.0));
products.add(new Product(4, "Java并发编程实战", "Brian Goetz", 98.0));
products.add(new Product(5, "Java网络编程", "Elliotte Rusty Harold", 65.0));
products.add(new Product(6, "Java Web开发技术大全", "李刚", 89.0));
products.add(new Product(7, "Java EE入门经典", "Ivor Horton", 72.5));
}
public List<Product> getProducts() {
return products;
}
}
```
(4)新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。
```
import java.util.HashMap;
import java.util.Map;
public class Customer {
private String name;
private Map<Integer, BookShop> shoppingCart;
public Customer(String name) {
this.name = name;
shoppingCart = new HashMap<>();
}
public void addProductToCart(Product product, int quantity) {
BookShop bookShop = new BookShop(product, quantity);
shoppingCart.put(product.getId(), bookShop);
}
public void updateQuantityInCart(int productId, int newQuantity) {
if (shoppingCart.containsKey(productId)) {
BookShop bookShop = shoppingCart.get(productId);
bookShop.setQuantity(newQuantity);
}
}
public void removeProductFromCart(int productId) {
if (shoppingCart.containsKey(productId)) {
shoppingCart.remove(productId);
}
}
public void printShoppingCart() {
double totalCost = 0.0;
System.out.println("购物车信息:");
for (BookShop bookShop : shoppingCart.values()) {
System.out.println(bookShop.getProduct().getName() + ",单价:" + bookShop.getProduct().getPrice() +
",数量:" + bookShop.getQuantity() + ",小计:" + bookShop.getSubTotal());
totalCost += bookShop.getSubTotal();
}
System.out.println("总费用:" + totalCost);
}
}
```
(5)新建测试主类SY6_3_BuyCar。
```
public class SY6_3_BuyCar {
public static void main(String[] args) {
BookStore bookStore = new BookStore();
Customer customer = new Customer("张三");
// 添加商品到购物车
customer.addProductToCart(bookStore.getProducts().get(0), 2);
customer.addProductToCart(bookStore.getProducts().get(1), 1);
customer.addProductToCart(bookStore.getProducts().get(2), 3);
// 更新购物车中商品的数量
customer.updateQuantityInCart(1, 1);
// 从购物车中删除商品
customer.removeProductFromCart(2);
// 打印购物车信息
customer.printShoppingCart();
}
}
```
以上就是实现一个图书购物车的基本思路。在SY6_3_BuyCar类的main方法中,我们首先创建了一个BookStore对象和一个Customer对象。然后,我们向购物车中添加一些商品,并使用updateQuantityInCart方法和removeProductFromCart方法更新和删除购物车中的商品。最后,我们使用printShoppingCart方法打印购物车中的商品信息和总费用。