【问题标题】:How to isolate an instance of a class with SuperCsv?如何使用 SuperCsv 隔离类的实例?
【发布时间】:2014-08-11 13:51:08
【问题描述】:

实际上,我有一个 ArticleModele 类,我在其中存储 .csv 列的内容,但我不知道如何访问对应于 .csv 中特定行的类的特定实例。这是我的代码:

 public static ArticleModele readWithCsvDozerBeanReader() throws Exception {   
     final CellProcessor[] processors = new CellProcessor[] { 

     new Optional(),
     new Optional(),
     new Optional()

     };

     ICsvDozerBeanReader beanReader = null;
     try {
     beanReader = new CsvDozerBeanReader(new FileReader(CSV_FILENAME),   CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);

     beanReader.getHeader(true); // ignore the header
     beanReader.configureBeanMapping(ArticleModele.class, FIELD_MAPPING);

     ArticleModele articleModele;
     while( (articleModele = beanReader.read(ArticleModele.class, processors)) != null )        {
     System.out.println(String.format(" %s", articleModele));}
     return articleModele;
     }
     finally {
     if( beanReader != null ) {
     beanReader.close();
      }
     }
    }
  }

这是课程:

public class ArticleModele {
    public String titre;
    public String contenu;
    public String attachement; 

    public ArticleModele(){}

    public ArticleModele(String titre, String contenu, String attachement){
    this.titre=titre;
    this.contenu=contenu;
    this.attachement=attachement;

    }
    public String getTitre(){
    return titre;
    }
    public void  setTitre(String titre){
    this.titre=titre;
    }
   public String getContenu(){
   return contenu;
  
   }
    public void setContenu(String contenu){
    this.contenu=contenu;
   }
    
    public String getAttachement(){
    return attachement;
      
      }
    public void setAttachement(String attachement){
    this.attachement=attachement;    
       }
    public String toString() {
    return String.format("ArticleModele [titre=%s, content=%s, attachement=%s]",      titre, contenu, attachement);
   }
}

【问题讨论】:

  • 您可以返回一个列表并根据需要进行处理,而不是返回单个 ArticleModele 。您可以通过从该列表中获取所需的任何行实例来访问它。

标签: java csv dozer supercsv


【解决方案1】:

代码返回最后一个结果,因为它覆盖了articleModele

ArticleModele articleModele;
while( (articleModele = beanReader.read(ArticleModele.class, processors))
        != null)             {
    System.out.println(articleModele);
}
return articleModele;

所以收集一份清单。

public static List<ArticleModele> readWithCsvDozerBeanReader() throws Exception { 
    List<ArticleModele> articleModele = new ArrayList<>();
    ArticleModele articleModele;
    while( (articleModele = beanReader.read(ArticleModele.class, processors))
         != null)             {
        System.out.println(articleModele);
        articleModeles.add(articleModele);
    }
    return articleModeles;

如果可行,您可以获得第 ith 篇文章。并走文章:

for (ArticleModele articleModele : articleModeles) { ...

【讨论】:

    【解决方案2】:

    例如,如果你想按标题获取一行,你可以有这样的东西:

    public static Map<String, ArticleModele> readWithCsvDozerBeanReader() throws Exception {   
         final CellProcessor[] processors = new CellProcessor[] { 
    
         new Optional(),
         new Optional(),
         new Optional()
    
         };
    Map<String, ArticleModele> map = new HashMap<String,ArticleModele>();
         ICsvDozerBeanReader beanReader = null;
         try {
         beanReader = new CsvDozerBeanReader(new FileReader(CSV_FILENAME),   CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
    
         beanReader.getHeader(true); // ignore the header
         beanReader.configureBeanMapping(ArticleModele.class, FIELD_MAPPING);
    
         ArticleModele articleModele;
         while( (articleModele = beanReader.read(ArticleModele.class, processors)) != null )        {
         System.out.println(String.format(" %s", articleModele));}
         map.put(articleModele .getTitre(),articleModele);
         }
         finally {
         if( beanReader != null ) {
         beanReader.close();
          }
         }
        }
    
      }
    

    并获取您想要使用的任何 articleModele:

    map.get("titre");
    

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多