使用带有多个文本文件的Map更改值

时间:2019-01-01 07:56:47

标签: java file-io

下面的第一段代码导入文件,并将其放入二维数组中。该文件的内容如下。

public MyPage1()
{

  //...
  MessagingCenter.Subscribe<Object>(this, "click_second_tab", (obj) =>
  {
     //load your data here

      Console.WriteLine("11111");
  });

} 

BufferedReader brStudents = null; BufferedReader brStudents2 = null; BufferedReader reader = null; String[][] spaces = new String[11224][4]; try { reader = new BufferedReader(new FileReader("FileMAIN")); String line = null; int row = 0; while ((line = reader.readLine()) != null) { String[] arrays = line.split(","); for (int i = 0; i < 4; i++) { spaces[row][i] = arrays[i]; } row++; } } 包含11442行数据,其布局方式如下:

FileMAIN

导入数组后,下面的代码比较John, Maths, 534, Green Sally, Science, 3232, Red Lilly, Science, 123123, Purple valuecolumn 0FileONE中的值,如果在FileONE中找不到它,则在{ {1}}。如果仍然找不到它,则表明它已丢失。

下面是FileTWOFileONE的示例

FileTWO

FileONE或FileTWO的示例

try
            {

                    Map<String, String> firstFile = getMapFromCSV("FileONE");
                    Map<String, String> secondFile = getMapFromCSV("FileTWO");
                    int index = 2;

                    for(String[] row : spaces) {
                        String valueToFind = row[index];
                        if(firstFile.containsKey(valueToFind)) {
                            row[index] = firstFile.get(valueToFind);
                        } else if(secondFile.containsKey(valueToFind)) {
                            row[index] = secondFile.get(valueToFind);
                        } else {
                            System.out.println("Missing " + valueToFind);
                        }
                    }

最后,我不确定如何不仅不能声明丢失,还可以将值更改为第二列中的值。

例如,123123, UJDJ7D 3232, YHD2H3 534, DSJI3HJ 中的值来自:

spaces[][]

收件人:

John, Maths, 534, Green
Sally, Science, 3232, Red
Lilly, Science, 123123, Purple

并仍显示缺少的任何人。

1 个答案:

答案 0 :(得分:0)

这就是实现for循环的方式,我跳过了contains的使用,直接执行了get并自己验证了结果。如果有任何get调用返回一个值,则将其分配给当前的row

for (String[] row : spaces) {
    String valueToFind = row[index];
    String value = firstFile.get(valueToFind);
    if (value == nil) {
        value = secondFile.get(valueToFind);
    }
    if (value != nil) {
        row[index] = value;
    } else {
        System.out.println("Missing " + valueToFind);
    }
}

我不知道此代码的上下文,但我仍然建议您创建一个简单的POJO类并跳过该多维数组。在我看来,它使代码更具可读性,并且使编写代码更容易

class Example {
    private String name;
    private String course;
    private String courseId;
    private String color;

    //constructor, get/set methods ..
}