【问题标题】:How to find specific object in nested lists?如何在嵌套列表中查找特定对象?
【发布时间】:2013-10-30 14:06:08
【问题描述】:

在嵌套列表中找到对象有什么好的可能性吗?也许来自番石榴的东西支持以下内容:

class PriceInfo() {
    List<PriceType> types;
}

class PriceType() {
    String value;
}

List<PriceInfo> infos;

如何执行:SELECT * from infos S WHERE S.types.value := 'TEST'? 甚至可以在更多嵌套列表中查找元素。

【问题讨论】:

  • 我建议你用老方法,看看here

标签: java guava


【解决方案1】:

嵌套循环(我删除了我的评论,因为无论哪种方式你都需要嵌套循环):

for(PriceInfo info : infos){
 for(PriceType type : info.types) {
  if(type.value.equals("test") { }
 }
}

您可能会在外部库中获得一些奇特的语法糖,但最终它们总是会诉诸于对每个项目进行循环。

【讨论】:

  • 最好使用"test".equals(type.value) ?
  • @Yegoshin 我在 SO 上听过很多人这么说。为什么这是更好的情况?
  • @peeskillet,如果第二个参数为空,则避免 NPE。因为您不能在空引用上调用equals()。这样您就无需在调用equals 之前检查type.value != null
  • @YegoshinMaxim:只有在 null 应该是有效输入时才建议这样做。如果那里不应该允许 null ,那么尽快抛出 NPE 是正确和正确的。
  • @Yegoshin Maxim:这叫做Yoda Condition,它不是世界上最好的东西。
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 2020-12-20
  • 1970-01-01
  • 2017-07-07
  • 2017-01-31
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
相关资源
最近更新 更多