设计一个商品类,包括商品编号、商品名称、价格、分类,要求,将20个商品存到HashMap中,输入任一商品编号,可以显示对应商品信息,并可以判定商品是否存在
class Commodity {
private String id;
private String title;
private double price;
private String sort;

public Commodity(){}
public Commodity(String id, String title, double price, String sort){
this.id = id;
this.title = title;
this.price = price;
this.sort = sort;
}
public String toString(){
return "id: " + id + "  " + "title: " + title+ "  " + "price: " + price+ "  " + "sort: " + sort;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}

}
import java.awt.event.*;
import java.util.*;
import javax.swing.*;class HashMapDemo extends JFrame implements ActionListener{
HashMap hm;
JPanel jp;
JLabel jl;
JTextField jtext;
JButton jb;

public HashMapDemo(){
hm = new HashMap();
hm.put("a", new Commodity("001", "电视机", 1768.23d, "家用电器"));
hm.put("b", new Commodity("002", "计算机", 2000d, "家用电器"));
hm.put("c", new Commodity("003", "高级音响", 4500.6d, "家用电器"));
hm.put("d", new Commodity("004", "鱼骨头", 13.5d, "食品"));
hm.put("e", new Commodity("005", "金华火腿", 150.00d, "食品"));

jp = new JPanel();
jp.setLayout(null);
jl = new JLabel("输入要查询的商品编号");
jtext = new JTextField(10);
jb = new JButton("查询");

jl.setBounds(50, 20, 140, 25);
jtext.setBounds(200, 20, 100, 25);
jb.setBounds(50, 80, 60, 25);
jb.addActionListener(this);
jp.add(jl);
jp.add(jtext);
jp.add(jb);
this.add(jp);
this.setSize(340,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} public void actionPerformed(ActionEvent e) {
TreeSet al = hm.values();
Iterator it = al.iterator();
if(e.getSource() == jb){
for(;it.hasNext();){
Map.Entry me = (Map.Entry)it.next();
if(jtext.getText().trim().compareTo(((Commodity)(me.getValue())).getId()) == 0){
JOptionPane.showMessageDialog(this,it.toString());
jtext.setText("");
jtext.requestFocus();
}else{
JOptionPane.showMessageDialog(this,"没有记录");
jtext.setText("");
jtext.requestFocus();
}
}
}

}
public static void main(String[] args){
new HashMapDemo();
}
}
类集代码有问题  求助!

解决方案 »

  1.   

    晕,你不会直接拿ID来做Map的key啊?查找又没有直接containsKey(id)就可以了
    光说有问题,什么问题也不说,难道还要别人拷过去跑一把阿?
      

  2.   

    今天刚开到Thinking in java第11章,浅谈了容器类,HashMap中直接containsmap()方法就可以判断商品是否存在了。还有提个建议:lz问问题的方式的确有问题呀。不要什么都拿出一段代码让别人给你分析,你可以说有什么错误,也可以把自己的分析结果贴出来,供大家讨论嘛