Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环2个列表并将结果打印到csv_Java_Spring_Apache_Csv_Apache Commons - Fatal编程技术网

Java 循环2个列表并将结果打印到csv

Java 循环2个列表并将结果打印到csv,java,spring,apache,csv,apache-commons,Java,Spring,Apache,Csv,Apache Commons,我有这个问题,在我试图循环超过2个列表(不同长度)和打印结果到csv 下面是我的代码:(我在需要帮助的地方标出了行) @RequestMapping(value=“/do.download”) 公共字符串下载(表单、模型、HttpServletRequest请求、HttpServletResponse响应)引发IOException{ PrintWriter pw=null; 试一试{ logger.debug(“+++++++++++++++++++++++++++++++++++++++++

我有这个问题,在我试图循环超过2个列表(不同长度)和打印结果到csv

下面是我的代码:(我在需要帮助的地方标出了行)

@RequestMapping(value=“/do.download”)
公共字符串下载(表单、模型、HttpServletRequest请求、HttpServletResponse响应)引发IOException{
PrintWriter pw=null;
试一试{
logger.debug(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”;
response.setContentType(“application/vnd.ms excel”);
response.setHeader(“内容处置”、“附件;文件名=“+”备份“+”.csv”);
response.setHeader(“Expires”、“0”);
setHeader(“缓存控制”,“必须重新验证,后csheck=0,预检查=0”);
响应。setHeader(“Pragma”、“public”);
pw=response.getWriter();
println(“carid、carname、carmodel、carcolor”);
car CarFromDB=新车();
List CarDetailsFromDB=Collections.emptyList();
List carColorFromDB=Collections.empltyList();
CarDetailsFromDB=Service.getcarDetails(CarFromDB);
carColorFromDB=Service.getcarColor(CarFromDB);
用于(carDetails carDetails:CarDetailsFromDB){
println(String.format(“%s,%s,%s,%s”,
cardetails.getcarid(),
cardetails.getcarname(),
cardetails.getcarmodel(),

//从listcarColorFromDB中获取汽车颜色,它也有carid我不确定每辆车是否可以有多种颜色。如果可以,下面可以看到,可以在另一个循环中循环颜色并比较carid。如果颜色匹配,则将颜色添加到字符串中。最后使用创建的字符串作为p的最后一个参数rintln.I修复了一些格式问题以及名称和大写。类应该是大写的,变量应该是小写的

@RequestMapping(value = "/do.download")
public String download(Form form, Model model,HttpServletRequest request, HttpServletResponse response)throws IOException {
    PrintWriter pw = null;
    try {
        logger.debug("+++++++++++++++++++++++++++++++++++++++");
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition","attachment; filename=" + "Backup"+ ".csv");
        response.setHeader("Expires", "0");
        response.setHeader("Cache-Control","must-revalidate, post-csheck=0, pre-check=0");
        response.setHeader("Pragma", "public");
        pw = response.getWriter();

        pw.println("carid,carname,carmodel,carcolor");

        Car carFromDB = new Car(); 
        List<CarDetails> carDetailsFromDB = new ArrayList<CarDetails>();
        List<CarColor> carColorFromDB = new ArrayList<CarColor>();


        carDetailsFromDB = Service.getCarDetails(carFromDB);
        carColorFromDB =  Service.getCarColor(carFromDB);


        for (CarDetails carDetails : carDetailsFromDB) {

            //loop through all the colors and find ones that match the carId for this carDetails
            // then concatenate them together with a "|"
            String colorsStr = "";
            for(CarColor color : carColorFromDB){
               if(color.getCarId() == carDetails.getCarId()){
                   colorsStr = colorsStr + "|" + color.toString();
               }
            }
            //chop off the first character which should be a "|" 
            colorsStr = colorsString.substring(1);


            pw.println(String.format("%s,%s,%s,%s", 
                    carDetails.getCarId(),
                    carDetails.getCarName(),
                    carDetails.getCarModel(),
                    //get car color from the listcarColorFromDB which also has carid <--- this is where i need help 
                    colorsStr
                    ));
        }
        pw.flush();

    } catch (Exception ex) {
        ex.printStacktrace();
    }
    return null;
}
@RequestMapping(value=“/do.download”)
公共字符串下载(表单、模型、HttpServletRequest请求、HttpServletResponse响应)引发IOException{
PrintWriter pw=null;
试一试{
logger.debug(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”;
response.setContentType(“application/vnd.ms excel”);
response.setHeader(“内容处置”、“附件;文件名=“+”备份“+”.csv”);
response.setHeader(“Expires”、“0”);
setHeader(“缓存控制”,“必须重新验证,后csheck=0,预检查=0”);
响应。setHeader(“Pragma”、“public”);
pw=response.getWriter();
println(“carid、carname、carmodel、carcolor”);
Car carFromDB=新车();
List carDetailsFromDB=new ArrayList();
List carColorFromDB=newarraylist();
carDetailsFromDB=Service.getCarDetails(carFromDB);
carColorFromDB=Service.getCarColor(carFromDB);
用于(CarDetails CarDetails:carDetailsFromDB){
//循环浏览所有颜色,并找到与此卡片细节匹配的颜色
//然后用“|”将它们连接在一起
字符串颜色sstr=“”;
for(CarColor颜色:carColorFromDB){
if(color.getCarId()==cardetals.getCarId()){
colorsStr=colorsStr+“|”+color.toString();
}
}
//切掉第一个应该是“|”的字符
colorsStr=colorsString.子字符串(1);
println(String.format(“%s,%s,%s,%s”,
carDetails.getCarId(),
carDetails.getCarName(),
carDetails.getCarModel(),

//从listcarColorFromDB中获取汽车颜色,它也有carid有两种方法可以处理它

  • 在第一个循环中运行第二个循环,用于

       for (carDetails cardetails : CarDetailsFromDB) {
               for (carColor carColor : carColorFromDB ) {
                  //match the car id from 2 objects and act   
               }
    
        }
    
  • 创建一张地图,钥匙为汽车id,值为
    carColor
    。访问循环中的地图以获得匹配的汽车颜色


  • 您的问题是什么?是否有堆栈跟踪?是否更改了其他文件中的类名?
       for (carDetails cardetails : CarDetailsFromDB) {
               for (carColor carColor : carColorFromDB ) {
                  //match the car id from 2 objects and act   
               }
    
        }