第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在java HashMap中根據(jù)產(chǎn)品類別獲取產(chǎn)品詳細(xì)信息?

如何在java HashMap中根據(jù)產(chǎn)品類別獲取產(chǎn)品詳細(xì)信息?

溫溫醬 2021-06-10 10:21:40
有HashMap。我在 hashmap 中添加了所有產(chǎn)品詳細(xì)信息。我想根據(jù)類別顯示產(chǎn)品詳細(xì)信息。這意味著應(yīng)該展示所有相同類別的產(chǎn)品。我正在嘗試為此創(chuàng)建方法。方法名稱是public List<Product> getProductsBasedOnCategory(String category){}請(qǐng)找到下面的代碼。產(chǎn)品.javapublic class Product {    private long pid;    private String pname;    private String category;    private float price;    private long stock;    private String remarks;    public Product()    {    }    public Product(long pid,String pname,String category,float price,long stock,String remarks){        this.pid=pid;        this.pname=pname;        this.category=category;        this.price=price;        this.stock=stock;        this.remarks=remarks;    }    public long getPid() {        return pid;    }    public void setPid(long pid) {        this.pid = pid;    }    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }    public String getCategory() {        return category;    }    public void setCategory(String category) {        this.category = category;    }    public float getPrice() {        return price;    }    public void setPrice(float price) {        this.price = price;    }    public long getStock() {        return stock;    }    public void setStock(long stock) {        this.stock = stock;    }    public String getRemarks() {        return remarks;    }    public void setRemarks(String remarks) {        this.remarks = remarks;    }}數(shù)據(jù)庫(kù)類.javapublic class DatabaseClass {    private static Map<Long, Product> products=new HashMap<>();    public static Map<Long, Product> getProduct()    {        return products;    }}我正在嘗試很多如何編寫(xiě)代碼來(lái)獲取 HashMap 中模型類的值。以及如何為上述 getProductByCategory(String category) 編寫(xiě)代碼。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以迭代地圖中的一組值,并過(guò)濾以返回匹配產(chǎn)品的列表:


public List<Product> getProductByCategory(String category) {


    if(products.size() == 0){

        return new ArrayList<>();

    }


    return this.products.values().stream()

       .filter(product -> product.getCategory().equals(category))

       .collect(Collectors.toList());

}

您還可以為此使用 for 循環(huán):


public List<Product> getProductByCategory(String category) {


    List<Product> ret = new ArrayList<>();


    if(products.size() == 0){

        return ret;

    }


    for(Product p: this.products.values()) {

        if(p.getCategory().equals(category))

            ret.add(p);

    }


    return ret;

}

請(qǐng)注意,ArrayList如果產(chǎn)品地圖為空,我將返回一個(gè)空值。這是集合返回類型的更好做法(而不是返回null)


查看完整回答
反對(duì) 回復(fù) 2021-06-17
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

一種方法是遍歷 Hashmap 如下:


public List<Product> getProductsBasedOnCategory(String category)

{

    List<Product> list = new ArrayList<Product>();


    if (products.size()<=0) {

        return list;

    }


    products.entrySet().stream().forEach((entry) -> {

        if (((Product) entry.getValue()).getCategory().equals(category)) {

            list.add(entry.getValue())

        }

    });


    return list;


}


查看完整回答
反對(duì) 回復(fù) 2021-06-17
?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

您至少有 2 個(gè)選項(xiàng),例如。


為您要搜索的每個(gè)字段準(zhǔn)備一張?zhí)囟ǖ牡貓D。如果您有很多對(duì)象,這會(huì)更快,因?yàn)樵诘貓D中搜索需要 O(1) 而遍歷整個(gè)集合需要 O(N)。大 O 備忘單

聲明地圖


private Map<Long, Product> productsByID = new HashMap();

private Map<String, Product> productsByCategory = new HashMap();

初始化地圖


public ProductDaoImpl()

{

    // Create the objects

    Product p1 = new Product(1L,"TV","Entertinement",10000F,250L,"This is best TV!");

    Product p2 = new Product(2L,"Computer","Technology",20000F,350L,"My Computer name Hp and SONY ViVo!");

    Product p3 = new Product(3L,"DeskTopComputer","Technology",15000F,150L,"My Desktop Computer name Accer and SONY ViVo!");


    //Assign the objects into the map by ids

    productsByID.put(1L, p1);

    productsByID.put(2L, p2);

    productsByID.put(3L, p3);


    //Assign the objects into the map by category

    productsByCategory.put(p1.getCategory(), p1);

    productsByCategory.put(p2.getCategory(), p2);

    productsByCategory.put(p3.getCategory(), p3);

}

使用您擁有的相同地圖,并按照其他答案的解釋幾乎遍歷所有值。

最后,我不知道這是否只是一個(gè)練習(xí)代碼并且您的值很少,在這種情況下,性能無(wú)關(guān)緊要,或者這是您的生產(chǎn)代碼的開(kāi)始,在這種情況下,您希望得到很多值。如果最新的是真的,可能您想將其建模為數(shù)據(jù)庫(kù)(sql 或非 sql)并按您想要/需要的特定字段進(jìn)行查詢。


查看完整回答
反對(duì) 回復(fù) 2021-06-17
  • 3 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)