我想问一些问题,如何从列表中获取特定值并添加到另一个列表,让我说我有列表(这是来自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
答案 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());