gpt4 book ai didi

java - 如何从 HashMap 中检索以前的值?

转载 作者:行者123 更新时间:2023-12-02 04:38:08 25 4
gpt4 key购买 nike

我有以下代码,我正在从文本文件中读取内容。文本文件如下:

111 Laptop 500 10
222 Mobile 120 8
333 Notebook 4 100
444 Chocolates 3 50
555 Guitar 199 5
666 LenovoLaptop 470 10
777 HPLaptop 450 10
888 SonyVAIO 525 5

如果用户输入 ID 作为 111,则输出应如下:

111 Laptop 500 10
666 LenovoLaptop 470 10
777 HPLaptop 450 10
888 SonyVAIO 525 5

我将文本文件的内容存储在 HashMap 中。这是代码:

public void comparableItems(String ID)
{
File f = new File("C://Class/items.txt");
HashMap<String, Item> map = new HashMap<String, Item>();

try
{
Scanner scan = new Scanner(f);

while(scan.hasNext())
{
String line = scan.nextLine();
String temp[] = line.split(" ");

Item it = new Item(temp[0], temp[1], Double.parseDouble(temp[2]), Integer.parseInt(temp[3]));

map.put(it.itemID, it);
}
if(map.containsKey(ID))
{
Item item = map.get(ID);
if(item.price>=item.price+100 && item.price<=item.price-100)
{

}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}

这是 Item 类:

public class Item 
{
String itemID;
String itemName;
double price;
int quantity;

public Item(String itemID, String itemName, double price, int quantity)
{
this.itemID = itemID;
this.itemName = itemName;
this.price = price;
this.quantity = quantity;
}

public void printItemDetails()
{
System.out.println("ID\tItemName\tUnitPrice\tQuantity");
System.out.println("===================================================");

System.out.println(this.itemID+ "\t" +this.itemName+ "\t" +this.price+ "\t"+this.quantity);
}
}

如何获得所需的输出?我正处于 Java Collections 的学习阶段。所以请耐心等待。

有人可以帮我吗?

谢谢!

最佳答案

您的 map 对您没有多大帮助。由于您在解析文件之前就知道要查找的引用项 ID,因此您可以在解析过程中看到该项目(如果)时捕获该项目。您确实需要某种集合来保存所有其他项目,但 List 对于此特定任务来说是更好的选择。

无论如何,您的问题的主旨似乎是检查您从文件中解析的所有其他项目。为此,您需要迭代 Mapvalues() View (并进行正确的比较):

for (Item otherItem : map.values()) {
if((otherItem.price <= item.price + 100)
&& (otherItem.price >= item.price - 100)) {
otherItem.printItemDetails();
}
}

如果您在 List 而不是 Map 中收集了项目,那么您可以将上面的 map.values() 替换为只是list(或者您为List使用的任何名称)。

关于java - 如何从 HashMap 中检索以前的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com