如何在自定义数组列表中添加值,其中bean类包含变量itemcode(String),cases(int),packs(int),pcs(int) 我在数组列表中保存了多个值
{code1 , 3,4,5}
{code2 , 3,5,5}
{code3 , 3,2,5}
{code3 , 1,4,2}
{code1 , 3,3,5}
{code3 , 3,4,5}
{code2 , 3,8,5}
{code2 , 3,4,6}
在这种情况下,我需要结果
{code1 ,6,7,10 }
{code2 ,9,17,16 }
{code3 ,7,10,12}
答案 0 :(得分:0)
我建议您使用Map而不是List。
如果键相同,则映射替换现有值的值。
你需要做的是先检查密钥是否可用获取该值然后再添加然后再使用相同的密钥将其存储在Map中。
`
答案 1 :(得分:0)
尝试使用它 -
ArrayList<String> list = new ArrayList<String>();
list.add("code1"); //itemcode
list.add(String.valueOf(100)); //cases
list.add(String.valueOf(150)); //packs
list.add(String.valueOf(200)); //pcs
从数组中获取数据 -
String itemcode = list.get(0); //code1
int cases = Integer.parseInt(list.get(1)); //100
int packs = Integer.parseInt(list.get(2)); //150
int pcs = Integer.parseInt(list.get(3)); //200
但我始终建议使用Map
代替ArrayList
来处理具有相同机制的此类场景。因为Map可以将数据存储为键值对。
答案 2 :(得分:0)
像这样创建一个Bean类
public class BeanClass{
public String code;
public int integerOne;
{{1 }} {
{1}} {
{1}} {
{1}} {
{1}} {
{1}}
public int integerTwo;
public int integerThree;
public BeanClass(String code,int integerOne,int integerTwo,int integerThree){
在大班中this.code=code;
> this.integerOne=integerOne;
{
{1}} {
{1}} {
{1}}
答案 3 :(得分:0)
我不确切知道你的bean的外观,但是使用HashMap
和循环你可以根据需要“分组并加总”。
它可能看起来像这样:
public static List<BeanClass> sumPerItemCode
(List<BeanClass> list) {
Map<String, BeanClass> map = new HashMap<>();
for (BeanClass p : list) {
String code = p.getItemCode();
BeanClass aggregatedItem = map.get(code);
if (aggregatedItem == null) {
aggregatedItem = new BeanClass(code, 0,0,0);
map.put(code, aggregatedItem);
}
aggregatedItem.setCases(aggregatedItem.getCases() + p.getCases());
aggregatedItem.setPacks(aggregatedItem.getPacks() + p.getPacks());
aggregatedItem.setPcs(aggregatedItem.getPcs() + p.getPcs());
}
return new ArrayList<BeanClass>(map.values());
}