Java 如何从HashMap检索以前的值?
我从文本文件中读取以下代码。文本文件i如下所示:Java 如何从HashMap检索以前的值?,java,hashmap,Java,Hashmap,我从文本文件中读取以下代码。文本文件i如下所示: 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 如果用户以111的身份输入ID,则应输出以下内容: 111 Laptop 500 10 666 LenovoLaptop 470 10 77
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
如果用户以111
的身份输入ID
,则应输出以下内容:
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();
}
}
如何获得所需的输出?我正处于Java集合的学习阶段。所以请容忍我
有人能帮我吗
谢谢 对于您想要的内容(价格接近所需项目的项目),HashMap不是一个高效的数据存储
然而,因为这听起来像是你的家庭作业,一旦你使用map.get(“111”)获得你的笔记本电脑,获得价格p,然后在hashmap上迭代以获得价格在你想要的p增量内的任何项目。收藏教程告诉你如何迭代收藏。你的
地图对你没有多大好处。因为在解析文件之前就知道要查找什么引用项ID,所以在解析过程中看到该项时(如果看到),就可以捕获该项。您确实需要某种类型的集合来保存所有其他项目,但是对于此特定任务而言,列表将是更好的选择
在任何情况下,您的问题的重点似乎是检查您从文件中解析的所有其他项。为此,您希望迭代映射
的值()
for(Item-otherItem:map.values()){
如果((otherItem.price=item.price-100)){
otherItem.printItemDetails();
}
}
如果您在列表
而不是映射
中收集了项目,那么您将用列表
(或您在列表
中使用的任何名称)替换上面的映射.values()
。为什么输入111会导致您提供的列表?ID
是否不唯一?我希望结果是111 10
。似乎您希望输入一个短语,如*laptop*
,以获得所有笔记本电脑的结果。@bblincoe我想使用项目ID(假定为唯一)进行搜索如果是这样的话,结果不就是111 laptop 500 10
?您的意思是map.get(“111”)
?你真的需要编辑你的问题以反映你想做什么。这正是我想要的。我得到了期望的输出。非常感谢你!
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);
}
}
for (Item otherItem : map.values()) {
if((otherItem.price <= item.price + 100)
&& (otherItem.price >= item.price - 100)) {
otherItem.printItemDetails();
}
}