从集合中检索第一个值

时间:2013-07-25 09:55:00

标签: java

我的代码如下:

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

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

6 个答案:

答案 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)