我的代码如下:
for (Map.Entry<Integer, ABC> x : getOfferCriteria().getCommitments()
.entrySet()) {
ABC abc = x.getValue();
if (abc.getYYY() == 0) {
abc.setEnabled(false);
}
}
如何在不使用for循环的情况下仅检索第一个值并禁用它,因为我知道第一个值始终为零
答案 0 :(得分:8)
首先,Map
s倾向于不被排序,因此没有第一个元素。假设它已被排序或订购:
map.values().iterator().next()
TreeMap
会使地图按特定顺序排序。 LinkedHashMap
在条目之间维护一个双向链表,以维护某种访问顺序。
答案 1 :(得分:1)
如果您有 LinkedHashMap ,则会保留广告订单。因此,如果您创建地图
Map<Integer,ABC> myMap = new LinkedHashMap<Integer,ABC>();
然后您可以直接执行以下操作(假设您要通过地图中的第一个键禁用元素保持的属性) -
getOfferCriteria().getCommitments().get(0).setEnabled(false);
答案 2 :(得分:0)
试试这个,
getOfferCriteria().getCommitments() != null ? getOfferCriteria().getCommitments().get(0) : null;
答案 3 :(得分:0)
只需将键值传递为0
,即可在地图上调用get方法Example
<PRE>
if(!getOfferCriteria().getCommitments().isEmpty()){
Map.Entry<Integer, String> entrySet =
getOfferCriteria().getCommitments().entrySet().iterator().next();
System.out.println("hello9"+entrySet .getValue());
}
</PRE>
答案 4 :(得分:0)
非常冗长的一个:
List<ABC> values = new ArrayList(yourMap.values());
Collections.sort(values, new Comparator<ABC>() {
public int compare(ABC o1, ABC o2) {
return o1.getYYY() - o2.getYYY();
}
});
values.get(0).setEnabled(false);
答案 5 :(得分:-1)
类似的东西:
new ArrayList<ABC>(getOfferCriteria().getCommitments().values()).get(0)