0

我的代码如下:

for (Map.Entry<Integer, ABC> x : getOfferCriteria().getCommitments()
        .entrySet()) {
    ABC abc = x.getValue();
    if (abc.getYYY() == 0) {
        abc.setEnabled(false);
    }
}

我如何只检索第一个值并在不使用 for 循环的情况下禁用它,因为我知道第一个值总是为零

4

6 回答 6

8

首先,Maps 往往不是有序的,所以没有第一个元素。假设它已排序或排序:

map.values().iterator().next()

ATreeMap将保持地图按特定顺序排序。LinkedHashMap在条目之间维护一个双向链表以维护某种访问顺序。

于 2013-07-25T09:58:52.450 回答
1

如果您有保留插入顺序的LinkedHashMap 。因此,如果您像这样创建地图

Map<Integer,ABC> myMap = new LinkedHashMap<Integer,ABC>();

那么您可以直接执行以下操作(假设您要禁用地图中第一个键持有的元素属性) -

getOfferCriteria().getCommitments().get(0).setEnabled(false);
于 2013-07-25T10:06:38.220 回答
0

试试这个,

getOfferCriteria().getCommitments() != null ? getOfferCriteria().getCommitments().get(0) : null;
于 2013-07-25T10:03:20.587 回答
0

只需通过将键值传递为 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>
于 2013-07-25T10:11:13.723 回答
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);  
于 2013-07-25T10:12:12.043 回答
-1

就像是:

new ArrayList<ABC>(getOfferCriteria().getCommitments().values()).get(0)
于 2013-07-25T09:59:03.753 回答