【问题标题】:Read the values from a csv file and identify the unique names从 csv 文件中读取值并识别唯一名称
【发布时间】:2021-10-12 23:20:12
【问题描述】:

我正在使用 talend 函数和组件从 csv 文件中读取和提取值,并在特定列 A 下查找唯一值。

csv 文件包含:

在这种情况下,我想读取用作标题的 NAME 列,并仅识别该名称类别中的唯一名称(Tom、Jason、Roy、Bianca)并将其存储在一个数组中,我可以使用它们来检查来自新文件的传入名称是否存在或是否与从上面的 csv 文件中提取的名称匹配。

工作设计:

  • tfilelist->tjava

tJava

  int n = 600;  
  int i=0;
  String line="";
  int linenumber=0;
  int index=0;
       
 try(BufferedReader br = new BufferedReader(new FileReader((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))))
 { 
 while ((line = br.readLine()) != null && linenumber< n )  
 {
    String[] tokens = line.split(",");
    System.out.println("Columns=>" + tokens[0]);
  }
 }

context.name 将是包含所有唯一名称的全局变量 还有其他更有效的方法来处理 csv 文件并从 A 列中仅提取唯一名称并将其存储在我们可以对其进行验证的列表/数组中吗?

感谢您的意见。谢谢

我想最好的选择是使用 br.readLine() 并使用拆分函数 (",") 存储值并将其存储在哈希集中。 然后 hashset.contains 验证新文件中的传入名称是否与存储的 hashset 值匹配,并相应地决定数据流。

我现在需要在 A 列下找到 UNIQUE 条目,我不希望标题显示在我的输出中。

输出: 列名称 列汤姆 列杰森 列汤姆 列罗伊 列比安卡

【问题讨论】:

    标签: java arrays csv input talend


    【解决方案1】:

    我的建议是:

    1. 创建 2 个 HashSet,“唯一”和“重复”。
    2. 对于每一行,用“.”分隔。作为分隔符并索引第一个元素(即该行上的名称)
    3. 如果 duplicate.contains(name) == true,则继续使用下一个名称
    4. 如果 unique.contains(name) == true,那么 unique.remove(name)、duplicate.add(name)、 else unique.add(name)
    5. 最后,unqiue 哈希集包含所有唯一名称。

    【讨论】:

    • Set - 不包含重复元素的集合。
    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多