我有一个清单说,
"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
}
迭代应继续在里面找到值?我不能改变结构。
答案 0 :(得分:0)
通过分析你的迭代,我想你有一种节点的XML属性。
列表o' temp'每个临时对象上有3个属性(sellPrice
,IsAvail
和pd_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或您想要执行的任何其他操作进行迭代。