我的代码如下:
for (Map.Entry<Integer, ABC> x : getOfferCriteria().getCommitments()
.entrySet()) {
ABC abc = x.getValue();
if (abc.getYYY() == 0) {
abc.setEnabled(false);
}
}
我如何只检索第一个值并在不使用 for 循环的情况下禁用它,因为我知道第一个值总是为零
我的代码如下:
for (Map.Entry<Integer, ABC> x : getOfferCriteria().getCommitments()
.entrySet()) {
ABC abc = x.getValue();
if (abc.getYYY() == 0) {
abc.setEnabled(false);
}
}
我如何只检索第一个值并在不使用 for 循环的情况下禁用它,因为我知道第一个值总是为零
首先,Map
s 往往不是有序的,所以没有第一个元素。假设它已排序或排序:
map.values().iterator().next()
ATreeMap
将保持地图按特定顺序排序。LinkedHashMap
在条目之间维护一个双向链表以维护某种访问顺序。
如果您有保留插入顺序的LinkedHashMap 。因此,如果您像这样创建地图
Map<Integer,ABC> myMap = new LinkedHashMap<Integer,ABC>();
那么您可以直接执行以下操作(假设您要禁用地图中第一个键持有的元素属性) -
getOfferCriteria().getCommitments().get(0).setEnabled(false);
试试这个,
getOfferCriteria().getCommitments() != null ? getOfferCriteria().getCommitments().get(0) : null;
只需通过将键值传递为 0 来调用 map 上的 get 方法
Example
<PRE>
if(!getOfferCriteria().getCommitments().isEmpty()){
Map.Entry<Integer, String> entrySet =
getOfferCriteria().getCommitments().entrySet().iterator().next();
System.out.println("hello9"+entrySet .getValue());
}
</PRE>
很长的一篇:
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);
就像是:
new ArrayList<ABC>(getOfferCriteria().getCommitments().values()).get(0)