【问题标题】:List of custom object in collection (list,array,map etc... ) spring application in JAVAJAVA中的spring应用程序集合中的自定义对象列表(列表,数组,地图等......)
【发布时间】:2019-05-20 12:27:43
【问题描述】:

根据要求,我必须创建一个自定义对象列表,其中包含集合中的 ID、名称、地址等详细信息(数组、列表、地图等)。如何遍历集合列表以获取基于 id 的唯一记录?

我创建了一个 List 对象,它包含不同的集合变量,如 arraylist、set、map 等...一旦将自定义对象值分配给 List,它就会转换为 Object 类对象。例如,我创建了一个自定义以 hashmap 形式的对象,键为 1,值作为 id=1,name=aaa,address=delhi 的自定义对象,并将自定义对象分配给 List,我正在重复使用 arraylist 创建自定义对象的相同过程和设置为好..如何遍历List对象以唯一基于id的用户详细信息?

List<Collection> customobjectlist

customobjectlist.add(list)
customobjectlist.add(set)
customobjectlist.add(map)

这里每个列表、集合和地图都包含 5 个自定义对象。我必须遍历自定义对象列表才能根据 ID 唯一地获取用户详细信息?

【问题讨论】:

  • 欢迎来到 SO!请少说话,多写代码。谢谢!

标签: java collections


【解决方案1】:

Map 在 Java 中不是 Collection,所以你的代码:

List<Collection> customobjectlist

customobjectlist.add(list)
customobjectlist.add(set)
customobjectlist.add(map)

如果您的变量 mapMap 接口的子类的实例,则无效。

第二个问题,你应该输入你的Collection(例如:List&lt;Collection&lt;MyObject&gt;&gt;),否则你会从集合中得到Object,你必须每次都检查instanceof,这真的不好东西!

因此,如果您键入 Collection 并仅将 Collection&lt;MyObject&gt;(不是 Map)添加到 customobjectlistListSetQueueStackVector,.. .) 你必须循环集合才能找到你的对象:

for (Collection coll : customobjectlist) {
  for (MyObject obj: coll) {
    if (theIdImLookingFor.equals(obj.getId()) {
      // find it
    }
  }
}

这不是唯一的方法,在 Java 8+ 中,您可以使用流 API:

customobjectlist.stream()
  .flatMap(Collection::stream)
  .findFirst(obj -> theIdImLookingFor.equals(obj.getId()))

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2021-08-22
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多