在“对象列表”中搜索值

时间:2013-11-27 18:46:27

标签: java java-ee

我有一张存储物体地图的地图:

Map<String, ActiveConnections> cache = new LinkedHashMap<>();

public class ActiveConnections
    {

        private int one;
        private int two;
        private int three;

        public ActiveConnections(int one, int two, int three)
        {
            this.one = one;
            this.two = two;
            this.three = three;
        }

        public int getOne()
        {
            return one;
        }

        public void setOne(int one)
        {
            this.one = one;
        }

        public int getTwo()
        {
            return two;
        }

        public void setTwo(int two)
        {
            this.two = two;
        }

        public int getThree()
        {
            return three;
        }

        public void setThree(int three)
        {
            this.three = three;
        }

    }

如何创建一个循环,在Map个对象中搜索值。例如,我想获取所有值two = 4

3 个答案:

答案 0 :(得分:2)

尝试此操作,它会迭代地图中的所有键/值对,在two == 4中查找值为ActiveConnections的值。找到后,您可以决定如何处理密钥或entry中的值,这取决于您。

for (Map.Entry<String, ActiveConnections> entry : cache.entrySet()) {
    if (entry.getValue().getTwo() == 4) {
        // we found one, do something with the entry
    }
}

答案 1 :(得分:1)

就像我在上面的评论中发布的那样 - 使用Map来迭代这些项目胜过使用地图的目的,但是如果还有其他限制没有带到这里,你必须使用地图,我会实现一个新的课程ActiveConnections中的搜索方法:

    public int search(int lookFor){
        int res = -1;//not found
        if(lookFor == one){
            res = one;
        }
        else if(lookFor == two){
            res = two;
        }
        else if(lookFor == three){
            res = three;
        }
        return res;        
    }

然后,对于每个项目(活动连接) - 只需调用搜索并验证结果不是-1(或您喜欢的其他“错误”代码)。

答案 2 :(得分:0)

您可以遍历值......

for (ActiveConnections value : cache.values()) {
    if (value.getTwo() == 4) {
        //logic
    }
}