在哈希映射中显示故障 import java.util.HashMap; 导入java.util.Iterator; 导入java.util.Map; 导入java.util.Scanner; 导入java.util.Set; 公共类主类 { 静态扫描仪键盘=新扫描仪(System.in); 静态HashMap-hMap; 公共静态void createAHashMap() { System.out.print(“表示初始容量:”); int initialCapacity=keyboard.nextInt(); System.out.print(“表示负载系数:”); float loadFactor=keyboard.nextFloat(); hMap=新的HashMap(初始容量、负载因子); } 公共静态void insertProductInformations() { 整数值[]=新整数[3]; 系统输出打印(“\n输入产品的条形码编号:”); 值[0]=keyboard.nextInt(); System.out.print(“输入产品名称:”); String productName=键盘。下一步(); 系统输出打印(“输入产品数量:”; 值[1]=keyboard.nextInt(); 系统输出打印(“输入产品价格:”); 值[2]=keyboard.nextInt(); hMap.put(值、产品名称); } 公共静态void displayList() { Set=hMap.entrySet(); 迭代器迭代器=set.Iterator(); System.out.println(“\n条码号\t产品金额\t产品价格\t产品名称”); while(iterator.hasNext()) { Map.Entry mEntry=(Map.Entry)迭代器.next(); System.out.print(mEntry.getKey()+“\t\t”+mEntry.getValue()+“\n”); } } 公共静态void main(字符串[]args) { createAHashMap(); System.out.print(“\n输入以添加产品“1”\n”); System.out.print(“输入以显示产品'2'\n”); System.out.print(“输入您的选择:”); int entry=keyboard.nextInt(); while(条目!=-99) { 如果(条目==1) { insertProductInformation(); } 如果(条目==2) { 显示列表(); } System.out.print(“\n按下您的新选择(退出:-99):”; entry=keyboard.nextInt(); } } }
嗨 我创建了一个包含超市产品信息的哈希图。但是,我无法正确显示键值(数组)。它向我展示了除产品名称以外的无关内容。如何更正此问题?在哈希映射中显示故障 import java.util.HashMap; 导入java.util.Iterator; 导入java.util.Map; 导入java.util.Scanner; 导入java.util.Set; 公共类主类 { 静态扫描仪键盘=新扫描仪(System.in); 静态HashMap-hMap; 公共静态void createAHashMap() { System.out.print(“表示初始容量:”); int initialCapacity=keyboard.nextInt(); System.out.print(“表示负载系数:”); float loadFactor=keyboard.nextFloat(); hMap=新的HashMap(初始容量、负载因子); } 公共静态void insertProductInformations() { 整数值[]=新整数[3]; 系统输出打印(“\n输入产品的条形码编号:”); 值[0]=keyboard.nextInt(); System.out.print(“输入产品名称:”); String productName=键盘。下一步(); 系统输出打印(“输入产品数量:”; 值[1]=keyboard.nextInt(); 系统输出打印(“输入产品价格:”); 值[2]=keyboard.nextInt(); hMap.put(值、产品名称); } 公共静态void displayList() { Set=hMap.entrySet(); 迭代器迭代器=set.Iterator(); System.out.println(“\n条码号\t产品金额\t产品价格\t产品名称”); while(iterator.hasNext()) { Map.Entry mEntry=(Map.Entry)迭代器.next(); System.out.print(mEntry.getKey()+“\t\t”+mEntry.getValue()+“\n”); } } 公共静态void main(字符串[]args) { createAHashMap(); System.out.print(“\n输入以添加产品“1”\n”); System.out.print(“输入以显示产品'2'\n”); System.out.print(“输入您的选择:”); int entry=keyboard.nextInt(); while(条目!=-99) { 如果(条目==1) { insertProductInformation(); } 如果(条目==2) { 显示列表(); } System.out.print(“\n按下您的新选择(退出:-99):”; entry=keyboard.nextInt(); } } },java,Java,嗨 我创建了一个包含超市产品信息的哈希图。但是,我无法正确显示键值(数组)。它向我展示了除产品名称以外的无关内容。如何更正此问题?静态HashMap hMap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; public class mainClass { static Scanner k
静态HashMap hMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class mainClass
{
static Scanner keyboard = new Scanner(System.in);
static HashMap <Integer[], String> hMap;
public static void createAHashMap()
{
System.out.print("Express the initial capacity: ");
int initialCapacity = keyboard.nextInt();
System.out.print("Express the load factor: ");
float loadFactor = keyboard.nextFloat();
hMap = new HashMap <Integer[], String> (initialCapacity, loadFactor);
}
public static void insertProductInformations()
{
Integer values[] = new Integer[3];
System.out.print("\nEnter product's barcode number: ");
values[0] = keyboard.nextInt();
System.out.print("Enter product's name: ");
String productName = keyboard.next();
System.out.print("Enter product's amount: ");
values[1] = keyboard.nextInt();
System.out.print("Enter product's price: ");
values[2] = keyboard.nextInt();
hMap.put(values, productName);
}
public static void displayList()
{
Set set = hMap.entrySet();
Iterator iterator = set.iterator();
System.out.println("\nBarcode Number\tProduct Amount\tProduct Price\tProduct Name");
while (iterator.hasNext())
{
Map.Entry mEntry = (Map.Entry) iterator.next();
System.out.print(mEntry.getKey() + "\t\t" + mEntry.getValue() + "\n");
}
}
public static void main(String[] args)
{
createAHashMap();
System.out.print("\nEnter to add product '1'\n");
System.out.print("Enter to display products '2'\n");
System.out.print("Enter your choice: ");
int entry = keyboard.nextInt();
while (entry != -99)
{
if (entry == 1)
{
insertProductInformations();
}
if (entry == 2)
{
displayList();
}
System.out.print("\nExpress your new choice (Exit: -99): ");
entry = keyboard.nextInt();
}
}
}
数组不适合作为HashMap
中的键,因为具有完全相同元素的两个不同数组实例将被视为不同的键。这种行为是由于数组不重写对象的equals
方法,因此只有当arr1==arr2
时,两个数组arr1
和arr2
才相等
钥匙的打印不是你的主要问题。这可以通过使用array.toString
打印数组键轻松解决
我建议您将HashMap
更改为HashMap
我同意Eran的回答,即您不应选择键作为整数数组,但我认为使用Arrays.toString无法完全解决显示问题,因为它将以指定格式提供数组,而不是您需要的格式。您需要根据需要显式格式化数据。根据上述示例修改显示的示例可能是:-
static HashMap <Integer[], String> hMap;
是不是在float loadFactor=keyboard.nextFloat()中输入错误;hMap=新的HashMap(初始容量、负载因子)
,意味着loadFactor是float
,但您的hashmap存储的字符串
?@Azat-Nugusbayev是相关的哈希表结构
public static void displayList()
{
Set set = hMap.entrySet();
Iterator iterator = set.iterator();
System.out.println("\nBarcode Number\tProduct Amount\tProduct Price\tProduct Name");
while (iterator.hasNext())
{
Map.Entry mEntry = (Map.Entry) iterator.next();
Integer[] values = (Integer[]) mEntry.getKey();
System.out.print(values[0] + "\t" + values[1] + "\t" + values[2] + "\t" + mEntry.getValue() + "\n");
}
}