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

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

在數(shù)組中查找等于并添加附加信息

在數(shù)組中查找等于并添加附加信息

Qyouu 2022-05-21 18:33:40
我正在嘗試實(shí)現(xiàn)一個(gè)邏輯,其中一個(gè)數(shù)組包含許多名稱不同的項(xiàng)目(產(chǎn)品)。盡管如此,產(chǎn)品可能具有相同的名稱,因此我需要添加一個(gè)附加屬性(大小)。我想這是一個(gè)簡單的任務(wù),但我目前的方法是重復(fù)的:for (int k = 0; k < items.length(); k++) { for (int l = k + 1; l < items.length(); l++) {  if(items.getString(k).equals(items.getString(l))) {    buttons.add(new Button(items.getString(k) + " Gr??e "                            + items.getJSONObject(k).getString("size");    buttons.add(new Button(items.getString(l) + " Gr??e "                            + items.getJSONObject(l).getString("size");  } } buttons.add(new Button(items.getString(k);}我對這些項(xiàng)目進(jìn)行了一些調(diào)整,以使其更易于閱讀。我現(xiàn)在面臨的問題是,附加了大小的兩個(gè)添加元素現(xiàn)在也再次附加了沒有大小的元素。那么,一旦我添加了這兩個(gè)元素,我該如何跳過它們呢?
查看完整描述

3 回答

?
眼眸繁星

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

使用name產(chǎn)品的作為標(biāo)識符是一個(gè)不好的方法。此外,假設(shè)您在 2 個(gè)產(chǎn)品具有相同名稱時(shí)添加產(chǎn)品的尺寸。那么當(dāng)產(chǎn)品的尺寸和名稱相同時(shí),你會怎么做?每個(gè)產(chǎn)品都需要有一個(gè) id。


但是,要回答您的問題,您的問題是您只需要一個(gè)循環(huán)就使用了 2 個(gè)循環(huán)。只需使用 if 語句來檢查兩個(gè)產(chǎn)品是否在一個(gè) for 循環(huán)中具有相同的名稱。


for (int k = 0; k < items.length(); k++) {

 if(k == items.length() - 1{

    //Last Entry in for loop, don't add anything here or you'll get a null pointer exception

  }

 else{

    if(items[k].productName.equals(items[k+1].productName){

      //2 Products have same name! Do your stuff.

    }

  }


你從來沒有指定什么item是items[].productName恭敬地改變以適應(yīng)你的代碼。


查看完整回答
反對 回復(fù) 2022-05-21
?
不負(fù)相思意

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

改變你的方法。

  • 首先按名稱對它們進(jìn)行分組(Map<String, List<Item>>例如)

  • 然后,對于映射中的每個(gè)條目,確定列表的大小是否 >1。如果是這樣,請將額外信息添加到該列表的每個(gè)項(xiàng)目中。

  • 然后,迭代所有條目和所有列表,并將它們放回一個(gè)大列表中。


查看完整回答
反對 回復(fù) 2022-05-21
?
慕俠2389804

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

標(biāo)記!由于buttons.add(new Button(items.getString(k); 在外部循環(huán)中,必須發(fā)生重復(fù)。至少如果你將該行放在else-clause中,它就不會出現(xiàn)。


實(shí)際上在這里,如果您不介意內(nèi)存,我建議使用 HashMap() 將 items.getString(k) 對存儲到 items.getJSONObject(k).getString("size") 的列表中。


然后你通過集合去創(chuàng)建這個(gè)哈希圖:


for(int k = 0;....){

   String key = items.getString(k);

   if(map.contains(key){

      map.get(key).add(items.getJSONObject(k));

   else {

     List<?> list = new ArrayList()

     list.add(items.getJSONObject(k));

     map.put(key, list);

   }

}


map.entrySet().stream().map(stringListEntry -> {

         if (stringListEntry.getValue().size() == 1) {

              return new Button(stringListEntry.getKey());

         } else {

             return stringListEntry.getValue().stream().map(size ->

                       new Button(stringListEntry.getKey() + " Gr??e " + size));

         }

     }).collect(Collectors.toList());


查看完整回答
反對 回復(fù) 2022-05-21
  • 3 回答
  • 0 關(guān)注
  • 107 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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