如何在java中执行此列表迭代?

时间:2015-01-08 03:33:42

标签: java list iteration

我有一个清单说,

"temp" : [{
              "value" : "24.6",
              "name" : "sellPrice"
            }, {
              "value" : "N",
              "name" : "IsAvail"
            }, {
              "value" : "http://my.com/prdurl/480389",
              "name" : "pd_URL"
            }

        }]

我正在迭代以找到IsAvail == N,

if (("IsAvail".equalsIgnoreCase(temp.get(i).getName().toString()))&& ("N".equalsIgnoreCase(temp.get(i).getValue().toString()))) {


 // Now here i want to print product url                                                                   
                    }

迭代应继续在里面找到值?我不能改变结构。

2 个答案:

答案 0 :(得分:0)

通过分析你的迭代,我想你有一种节点的XML属性。 列表o' temp'每个临时对象上有3个属性(sellPriceIsAvailpd_URL),并且您希望获得与{{1}匹配的临时值pd_URL }。

让我们说:

IsAvail==N

使用相应的封装。

您可以像这样迭代class Temp { Attribute[] attributes; } class Attribute{ String name, value; } 列表:

Temp

答案 1 :(得分:0)

由于您没有提供存储此信息的Java结构,因此很难理解您的要求。假设结构类似于:

Map<String, List<KeyValuePair>> nameValuesMap;

你真正想要做的是返回具有键值对的键和你给出的标准(大假设),然后你可以用:

nameValuesMap.keySet().stream()
    .filter(name -> nameValuesMap.get(name).stream()
        .filter(keyValue -> keyValue.matches("IsAvail", "N"))
        .findAny().isPresent())
    ...

假设您的KeyValuePair类实现了matches谓词。

此代码生成一个流,然后可以将其收集到列表中,使用forEach或您想要执行的任何其他操作进行迭代。