![](/img/trans.png)
[英]How to create a new SQL row and add elements to its list field in SpringBoot?
[英]How to add frequency of elements from List in SpringBoot?
這是我的實體類,我試圖將元素的頻率顯示為數量,但每次我得到 1 作為數量
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int productid;
private String productname;
private String purchaseamount;
@Transient
private int quantity;
在這里,我試圖根據 productId 元素的頻率獲取數量,但對於每個產品,我只得到 1 個
public List<AddingProductForView> getData(List<Integer> productid) {
List<AddingProductForView> findAllByProductIdIn = repository.findAllByproductidIn(productid);
for (int i = 0; i < findAllByProductIdIn.size(); i++) {
Set<Integer> distinct = new HashSet<>(productid);
for (Integer count : distinct) {
int frequency = Collections.frequency(productid, count);
findAllByProductIdIn.get(i).setQuantity(frequency);
}
}
return findAllByProductIdIn;
}
請求正文:- [1,1,1,1,2,2]
[
{
"productid": 1,
"productname": "RO",
"purchaseamount": "4000 ",
"quantity": 1
},
{
"productid": 2,
"productname": "RO",
"purchaseamount": "8000 ",
"quantity": 1
}
]
預期結果:-
[
{
"productid": 1,
"productname": "RO",
"purchaseamount": "4000 ",
"quantity": 4
},
{
"productid": 2,
"productname": "RO",
"purchaseamount": "8000 ",
"quantity": 2
}
]
我能理解你的意圖。
我嘗試將此代碼用於我的開發環境。 它運作良好。
我建議一些方法
1.你最好調試一下
// whether frequency is exist or not.
int frequency = Collections.frequency(productid, count);
2.你真的要這樣嗎? 如果此代碼執行,頻率的結果是集合的最終實體。因為您不使用 if 條件。
for (int i = 0; i < findAllByProductIdIn.size(); i++) {
//distinct = [1,2]
Set<Integer> distinct = new HashSet<>(productid);
/** frequency is unconditionally 2. */
for (Integer count : distinct) {
int frequency = Collections.frequency(productid, count);
findAllByProductIdIn.get(i).setQuantity(frequency);
}
}
我可以檢查頻率和 getQuantity。 我建議調試。
如果有條件,你是必要的
loop : for (int i = 0; i < findAllByProductIdIn.size(); i++) {
Set<Integer> distinct = new HashSet<>(productid);
for (Integer count : distinct) {
if(findAllByProductIdIn.get(i).getProductId == count) {
int frequency = Collections.frequency(productid, count);
findAllByProductIdIn.get(i).setQuantity(frequency);
continue loop;
}
}
}
我修改了你的代碼。 如果條件允許,這不是必需的,並且可以減少代碼行
for (int i = 0; i < findAllByProductIdIn.size(); i++) {
int frequency = Collections.frequency(productid,findAllByProductIdIn.get(i).getProductId);
findAllByProductIdIn.get(i).setQuantity(frequency);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.