Java从列表中获取特定值并添加到其他列表中

时间:2017-08-25 03:10:37

标签: java spring list hibernate rest

我想问一些问题,如何从列表中获取特定值并添加到另一个列表,让我说我有列表(这是来自hibernate DAO的cust列表),如:

[["marketplace","001-002-003"],["insurance","142-523-132"],["car purchase","982349824"]]

我只想从该列表中获得“市场”,“保险”和“汽车购买”的价值,并添加到名为“bu”的新列表中

这是我的代码

public @ResponseBody String findBU(@RequestBody AllCustomerHist customer){
        BigDecimal id= customer.getId();
        String message;
        List<String> bu= new ArrayList<>();
        int i;

        System.out.println("ID = "+id);
        List<AllCustomerHist> cust = allCustomerHistService.findBU(id);


        for (i=0; i<cust.size(); i++){
            System.out.println("iteration = "+i);

            // stumbled here //
        }

        JSONObject json = new JSONObject();
        json.put("id", id);
        json.put("BU", bu);

        message = json.toString();
        return message;

    }

这是我的AllCustomerHistDaoImpl类

//release 1.3
@SuppressWarnings("unchecked")
public List<AllCustomerHist> findBU(BigDecimal adpId) {
    // TODO cek kodingan
    Criteria criteria = getSession().createCriteria(AllCustomerHist.class)
            .setProjection(Projections.projectionList()
                    .add(Projections.property("srctable"), "srctable")
                    .add(Projections.property("customerId"), "customerId"))
    .add(Restrictions.eq("adpId", adpId));

    return (List<AllCustomerHist>)criteria.list();
}

请注意,AllCustomerHist是一个在hibernate中定义表的实体类

谢谢你的帮助:D

2 个答案:

答案 0 :(得分:1)

由于你需要进行一些验证,你需要取消整个AllCustomerHist对象,我将做的是以下代码

List<AllCustomerHist> cust = allCustomerHistService.findBU(id);
List<String> bu = new ArrayList<String>(cust.size());

        for (i=0; i<cust.size(); i++){
            System.out.println("iteration = "+i);
            AllCustomerHist aCust = cust.get(i);
            bu.add(aCust.getSrctable());

        }
//here your bu list should be ready to be used.....

我希望这就是你需要的东西

答案 1 :(得分:0)

如果你使用JDK1.8 +,你也可以这样做:

List<AllCustomerHist> cust = allCustomerHistService.findBU(id);
List<String> bu = cust.stream()
    .map(AllCustomerHist::getSrctable)
    .collect(Collectors.toList());