Java 应用程序读取 csv 文件并比较每行中的数据

标签 java csv

我对编程相当陌生,刚刚被设置了创建一个应用程序的任务,该应用程序将从用户输入中读取 .csv 文件名,然后运行一系列测试。最终,程序需要比较每一行(csv 文件中的每一行代表一个路由器),并根据设定的标准返回哪些路由器需要补丁。 CSV 文件的格式如下所示,其中包含不一定需要包含的标题“主机名”、“IP 地址”、“已修补?”、操作系统版本和注释 -

A.example.COM,  1.1.1.1, NO,    11,   Faulty fans
b.example.com,  1.1.1.2, no,    13,   Behind other routers
C.EXAMPLE.COM,  1.1.1.3, no,    12.1    
d.example.com,  1.1.1.4, yes,   14  
c.example.com,  1.1.1.5, no,    12,   Case a bit loose
e.example.com,  1.1.1.6, no,    12.3    
f.example.com,  1.1.1.7, No,    12.2    
g.example.com,  1.1.1.6, no,    15

因此,程序需要返回任何不与任何其他路由器共享相同主机名和 IP 地址、当前操作系统版本为 12 或更高版本或尚未打补丁的路由器的名称。

到目前为止,我已经尝试将每一行作为 Java 对象读取并从那里进行比较,但没有成功。任何有关使该程序正常运行的好方法的建议将不胜感激,谢谢。

最佳答案

以下是我的建议:

  1. 创建一个类(我们称之为“Router”),其中包含“hostName” - 字符串、“ipAddresss” - 字符串、“patched” - boolean 值、“osVersion” - Double 和“notes” - 字符串。添加相关的 setter 和 getter。
  2. 创建一个包含“Router”类列表的“routers”列表,并将其初始化为空。
  3. 创建一个以 Router 对象作为参数的方法。首先比较“osVersion”。然后遍历“路由器”列表。在迭代期间,将给定的 Router 对象与您遇到的每个 Router 对象进行比较。如果存在重复项,则不执行任何操作,否则在迭代后将此对象添加到列表中。
  4. 迭代 CSV 文件的每一行,并将每一行解析为“Router”对象,并调用您在 #3 中创建的方法。
  5. “路由器”应包含程序完成后的最终结果。

关于Java 应用程序读取 csv 文件并比较每行中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634722/

相关文章:

java - 在java中取字符串的一部分

java - JOGL绘制VBO黑屏

java - 在插入下一批数据之前确定 CSV 大小

java - 从 .txt 读取。 Java 中的文件,将结果保存在 ArrayList 中并比较字符

Java Crowdflower API

java - 我的 url 映射转移了我的 CSS 页面

php - 自动检测文件中是否存在 CSV header

python - json.decoder.JSONDecodeError : Expecting value: line 1 column 2 (char 1)

vb.net - 从 MS Access 或 VB.NET 中的 CSV 导入更新现有的 Access 记录

matlab - 使用 matlab 读取巨大的 .csv 文件 - 文件组织不当