Java列表会不断添加最后一条记录,并将其复制为文件中的记录数

马声

我的代码中发生了一件奇怪的事情,但我不确定是怎么回事。我有一个看起来像这样的文件:

id;state;city;total_pop;avg_temp
1;Florida;;120000;76
2;Michigan;Detroit;330000;54
3;New Jersey;Newark;;34

我的Java解析器应创建一个地图列表作为结果并返回。但是唯一返回的是文件中的最后一条记录,重复了文件中的行数。有人可以看我的代码并启发我发生了什么吗?先感谢您。

public class FileParserUtil {

    public List<Map<String, String>> parseFile(String fileName, char seperator)
            throws IOException {

        CSVReader reader = new CSVReader(new FileReader(fileName), seperator);
        Map<String, String> record = new HashMap<String, String>();
        List<Map<String, String>> rows = new ArrayList<Map<String, String>>();

        String[] header = reader.readNext();
        String[] nextLine;

        while ((nextLine = reader.readNext()) != null) {
            for (int i = 0; i < header.length; i++) {
                record.put(header[i], nextLine[i]);
            }
            System.out.println("--------Here is the record: ---------");
            System.out.println(record);
            rows.add(record);
            System.out.println("--------Here are the rows: ---------");
            System.out.println(rows);
        }
        reader.close();
        return rows;

    }
}

这是上面从主要方法运行的控制台输出...

--------Here is the record: ---------
{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}
--------Here are the rows: ---------
[{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}]
--------Here is the record: ---------
{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}
--------Here are the rows: ---------
[{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}, {id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}]
--------Here is the record: ---------
{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}
--------Here are the rows: ---------
[{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}]
瑟鲁马莱·帕塔萨拉西(Thirumalai Parthasarathi)

这是因为在HashMap中您不能有重复的值..因此,当您执行此操作时

record.put("id","1");

它将检查是否已经有一个名为“ id”的键,如果存在,它将用新值替换其旧值。在第一个迭代中,它不会替换任何内容,但是从下一个迭代中,它将开始替换旧值。

当您添加

row.add(record);

您将一次又一次添加相同的引用,并且由于映射仅包含新插入的值,因此toString()将调用相同引用的方法,并且一次又一次打印相同的值。

你应该添加

record = new HashMap<String,String>();

为每个记录添加一个新地图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取文件的最后一条记录

来自分类Dev

sql.eachRow 只将最后一条记录添加到列表中

来自分类Dev

如何捕获文件中的最后一条记录

来自分类Dev

从表中删除特定记录的用户窗体总是在删除特定记录后复制最后一条记录

来自分类Dev

从Elm中的记录列表中返回一条记录

来自分类Dev

从Elm中的记录列表中返回一条记录

来自分类Dev

在MySQL的下一条记录中插入最后一条记录字段

来自分类Dev

从记录列表中读取一条记录的页面。[PHP]

来自分类Dev

ResultSet仅返回表中的最后一条记录

来自分类Dev

获取mysql表中的最后一条记录

来自分类Dev

如何查找组中的最后一条记录

来自分类Dev

如何从sql server中获取最后一条记录?

来自分类Dev

获取相关模型中的最后一条记录

来自分类Dev

真/假表中的最后一条记录

来自分类Dev

andorid-db查询以获取最后一条记录或组中的第一条(如果最后一条记录与先前的记录重复)

来自分类Dev

从Blob中的平面文件删除最后一条记录到Azure数据仓库

来自分类Dev

将文件写入数组它只写入我数组中的最后一条记录

来自分类Dev

MySQL JOIN最后一条记录

来自分类Dev

查看每组的最后一条记录

来自分类Dev

从表中的分组记录中选择除最后一条记录之外的所有记录

来自分类Dev

将Django模型中的一条记录限制为默认记录

来自分类Dev

将Django模型中的一条记录限制为默认记录

来自分类Dev

vim:如何复制一条记录

来自分类Dev

相对结果集跳过Java / Access中的最后一条记录

来自分类Dev

SQL查询以在一个表中搜索一条记录,并将其替换为另一张表中的多条记录

来自分类Dev

在字典/列表中查找下一条记录

来自分类Dev

在字典/列表中查找下一条记录

来自分类Dev

我想添加费用和余额记录并将其更新到其他列或相同的余额列,但只有第一条记录受到影响

来自分类Dev

如何使用MySQL连接表中的第一条记录和最后一条记录?

Related 相关文章

  1. 1

    读取文件的最后一条记录

  2. 2

    sql.eachRow 只将最后一条记录添加到列表中

  3. 3

    如何捕获文件中的最后一条记录

  4. 4

    从表中删除特定记录的用户窗体总是在删除特定记录后复制最后一条记录

  5. 5

    从Elm中的记录列表中返回一条记录

  6. 6

    从Elm中的记录列表中返回一条记录

  7. 7

    在MySQL的下一条记录中插入最后一条记录字段

  8. 8

    从记录列表中读取一条记录的页面。[PHP]

  9. 9

    ResultSet仅返回表中的最后一条记录

  10. 10

    获取mysql表中的最后一条记录

  11. 11

    如何查找组中的最后一条记录

  12. 12

    如何从sql server中获取最后一条记录?

  13. 13

    获取相关模型中的最后一条记录

  14. 14

    真/假表中的最后一条记录

  15. 15

    andorid-db查询以获取最后一条记录或组中的第一条(如果最后一条记录与先前的记录重复)

  16. 16

    从Blob中的平面文件删除最后一条记录到Azure数据仓库

  17. 17

    将文件写入数组它只写入我数组中的最后一条记录

  18. 18

    MySQL JOIN最后一条记录

  19. 19

    查看每组的最后一条记录

  20. 20

    从表中的分组记录中选择除最后一条记录之外的所有记录

  21. 21

    将Django模型中的一条记录限制为默认记录

  22. 22

    将Django模型中的一条记录限制为默认记录

  23. 23

    vim:如何复制一条记录

  24. 24

    相对结果集跳过Java / Access中的最后一条记录

  25. 25

    SQL查询以在一个表中搜索一条记录,并将其替换为另一张表中的多条记录

  26. 26

    在字典/列表中查找下一条记录

  27. 27

    在字典/列表中查找下一条记录

  28. 28

    我想添加费用和余额记录并将其更新到其他列或相同的余额列,但只有第一条记录受到影响

  29. 29

    如何使用MySQL连接表中的第一条记录和最后一条记录?

热门标签

归档