2014-11-13 4 views
-1

Это мой код:уменьшить цикл в карте

package vvv; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 


public class test { 

public static void main(String args[]){ 
    Map<Integer, String> map = new HashMap<Integer, String>(); 
    map.put(1, "demo"); 
    map.put(20, "fdemo"); 
    map.put(60, "gdemo"); 
    map.put(500, "udemo"); 
    map.put(8000, "odemo"); 
    // etc 
    int b = 7999; 
    for(int i =1; i<=8000; i++) 
    { 
     if(i == b) 
      System.out.println(map.get(b)); 
    } 

} 

} 

Я не хочу, чтобы использовать большой «цикл» просто найти результат с карты, а кроме того, я не могу изменить ключ на карте (например, я не могу изменить 500-4).

Что мне делать, чтобы уменьшить состояние цикла?

+4

Этот код не смысл, какова цель вашего цикла? – nomoa

+0

Это всего лишь пример – user2753080

+0

Пример для чего? –

ответ

5

Это перебрать все ключи в карте:

for (Integer key : map.keySet()) { 
    ... 
} 

Однако, я не вижу смысла в вашем цикле, так как вы только сделать что-то для конкретного ключа (7999), так что ваши петля может быть уменьшена до:

System.out.println(map.get(b)); 

Изменение ключа - это не то, что вы можете сделать с помощью одного метода. Вы должны сначала удалить старый ключ, а затем вставить новый ключ с использованием того же значения.

if (map.containsKey(500)) 
    map.put(4,map.remove(500)); 
0
for (Map.Entry<Integer, String> entry : map.entrySet()) { 
    Integer key = entry.getKey(); 
    if(b==key); 
     println entry.getValue(); 
} 
0

Использование:

for (Integer theKey : map.keySet()) { 
    String val=map.get(thekey); 
    .... 
} 

Если ваш просто пытаются проверить, если какой-нибудь ключ существует или нет, вам не нужно даже петли, используйте map.containKey(some_key)

И может потребоваться обратить внимание, что если ваш ключ является вашим классом клиента, а не примитивным типом, вам необходимо переопределить метод equals() и hashCode(), или что-то плохое произойдет.

0

Попробуйте ниже код, он будет работать нормально. Не нужно итерации карты, вы просто используете map.vastainsKey (ключ) метод.

{ 
    String tempString=null; 
    tempString=((map.containsKey(b)?map.get(b):" ")); 
    System.out.println(tempString); 
} 

или вы можете также написать, как этот

{ 

    System.out.println((map.containsKey(b)?map.get(b):" ")); 
} 
Смежные вопросы