【问题标题】:Java - method to lookup a specific ID from txt file and return that line detailsJava - 从 txt 文件中查找特定 ID 并返回该行详细信息的方法
【发布时间】:2017-11-18 04:54:57
【问题描述】:

我正在编写一种方法来查找存储在 txt 文件中的特定 ID。

这些详细信息被分配给一个 arrayList 标题列表,如果查找字符串与存储在列表中的数据匹配,那么它会读取 id、firstname、surname(即 txt 文件的整行),然后创建另一个类的实例轮廓。

然后我想将此查找数据添加到一个名为查找的新数组列表中,然后将其输出。但是我有以下方法,它不起作用,只是跳转到我的 else 子句。 谁能告诉我哪里出了问题以及如何解决将不胜感激。谢谢。

【问题讨论】:

  • ArrayList<Profile> 永远不会包含String IDlookup,因为ProfileString 是完全不同的数据类型
  • 正如@OHGODSPIDERS 所说,您需要将类型与类型进行比较,因此您需要在列表中获取 ID 的值以与 IDlookup 进行比较,您可能需要 Profile 中的方法来执行此操作
  • @Fepapci 请不要从您的问题中删除所有代码,使其对其他读者无用。此外,如果一个答案解决了您的问题,您应该接受它,并可能为他们的努力给予支持。

标签: java oop file-io


【解决方案1】:

您可以使用 TupleMap 来实现相同的效果吗?

// 创建我们的地图 Map peopleByForename = 新哈希映射>();

// 填充它 peopleByForename.put("Bob", new Tuple2(new Person("Bob 史密斯”, 新人(“鲍勃·琼斯”));

// 从中读取 Tuple bobs = peopleByForename["Bob"]; 人 bob1 = bobs.Item1;人 bob2 = bobs.Item2;

然后可以在此处找到从 txt 文件中读取 key:value 的示例:Java read txt file to hashmap, split by ":" using Buffered Reader。

【讨论】:

    【解决方案2】:

    如果您使用的是 Java8,则可以使用 Lambda 来帮助您。只需替换这一行:

        if(list.contains(IDlookup))
    

    到这个:

        boolean containsId = list.stream().anyMatch((Profile p) -> p.getId().equals(IDlookup));
        if (containsId)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2020-01-30
      • 2021-06-01
      相关资源
      最近更新 更多