java - 在迭代时使用 'if' 条件查找项目与使用 get(key),当你已经需要迭代时

标签 java algorithm

我已经迭代了几个 HashMap ,每个 HashMap 的大小为 20-40 个项目,因此在迭代或使用单个 时仅通过添加 if 条件来查找项目是否更有意义get(key) 操作 ?哪种方法会提供更多性能。

我知道要获得准确的结果,我应该依赖分析结果,但由于我对分析不太熟悉,因此需要专家意见。

编辑:

这是我的代码:

    for (HColumn col : lobColumns) {// lobcolumns is a list but I also have hashmap already built containing same elements as this list
        switch (ByteBufferToInt(col.getName())) {

            case .......:
                break;

            case .......:
                break;
            case .......:
                break;
            case .......:
                break;
            case .......:
                break;                  
        }            
        if (ByteBufferToInt(col.getName()).intValue()==currentUserId()){// here is what I'm using as replacement for hashmap `get()`
            .....
        } 
    }

lobcolumns 是一个列表,但我也已经构建了 hashmap,其中包含与该列表相同的元素。这个列表/映射包含一些常量和一些变量对象,对于常量我使用 switch case 来进行高效查找和查找单个特殊变量项我需要决定是否使用 hashmap get() 或在已经迭代时使用 if

最佳答案

好吧,我的意思是让我们看看它。 get 操作是 O(1) 或在最坏情况下具有完美散列 函数的常数时间。而在最坏的情况下,迭代是 O(n)。如果您提前获得了 key,只需调用 get 即可,无需遍历所有内容。

更新

下面一行:

for (HColumn col : lobColumns)

您的评论是您已经将所有这些值存储在 HashMap 中。如果 map 是这样定义的:

Map<Integer, HColumn> columns = new HashMap<Integer,HColumn>();  

if 语句移出 for 循环,变成如下:

HColumn column = columns.get(currentUserId());     
if(null != column)  
{  
     doSomethingWithColumn(column);  // this was the old if block
}   
for(Integer col : columns.keySet())  
{  
    switch(col)  
    {  
       ...  
    }
}

这减少了 if 只执行一次,因为它现在在 for 循环之外。

关于java - 在迭代时使用 'if' 条件查找项目与使用 get(key),当你已经需要迭代时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239681/

相关文章:

javascript - 使用 lodash 简化表达式

php - 在 PHP 中查找从索引绑定(bind)的地址

algorithm - 模逆计算

java - JAXB 可以生成泛型类吗?

java - NoClassDefFoundError : scala/math/Ordering with spring-kafka-test 2. 5.7

java - Tomcat Server.xml 中的动态通配符设置(非 www)

c - (C) 对文本文件中的数组进行基数排序

java - 使用带有 JSON 正文的 ReSTLet 进行多部分 POST 处理

java - OCPJP考试中的多线程

algorithm - 哈夫曼码的全二叉树有什么优势?