2014-09-30 2 views
0

У меня есть карта, которая будет заполнена вопросом времени. проблема в том, что я хочу знать, что такое последняя добавленная запись. пока я нашел только последнюю запись на карте. есть ли способ получить последнюю добавленную запись?Java получить последнюю добавленную запись на карте

код до сих пор:

 int spawned = 0; 
    NavigableMap<String, Integer> minioncounter = new TreeMap<String, Integer>(); 

    while (spawned < 7) { 
     if(!minioncounter.containsKey("big")){ 
      minioncounter.put("big", 1); 
     }else if(!minioncounter.containsKey("small")){ 
      minioncounter.put("small", 1); 
     }else if(minioncounter.containsKey("small") && minioncounter.get("small") < 2){ 
      minioncounter.put("small", 2); 
     }else if(!minioncounter.containsKey("archer")){ 
      minioncounter.put("archer", 1); 
     }else{ 
      minioncounter.put("archer", minioncounter.get("archer")+1); 
     } 
     spawned++; 
     System.out.println(minioncounter.); 
     System.out.println(minioncounter); 

} 

токовый выход консоли:

{big=1} 
{big=1, small=1} 
{big=1, small=2} 
{archer=1, big=1, small=2} 
{archer=2, big=1, small=2} 
{archer=3, big=1, small=2} 
{archer=4, big=1, small=2} 

порядок, в котором оно уже было сказано это один я должен использовать позже.

+0

Вы можете использовать связанную карту хэша – 6ton

ответ

3

http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html

Тем не менее, это не может удовлетворить ваши конкретных потребностей, я бы прочитать документацию.

Это достаточно просто, чтобы расширить существующую реализацию, чтобы обеспечить еще больший контроль.

0

Вы можете создать свой собственный класс StoreLastAddMap, который обертывает реальный NavigableMap. Вы открываете метод put в своем классе, где вы будете обновлять ссылку на последнюю добавленную запись перед вызовом метода addabled NavigableMap.

public class StoreLastAddMap() { 

    NavigableMap<String, Integer> minioncounter = new TreeMap<String, Integer>(); 
    private String lastAddedKey; 

    put(String key, Integer val) { 
     lastAddedKey = key; 
     minioncounter.put(key, val); 
    } 

    //getter for the wrapped Map to do other Map related stuff 
    NavigableMap getMap() {return minioncounter;} 

    Integer getLastAddedVal(){return minioncounter.get(lastAddedKey);} 

    String getLastAddedKey() {return lastAddedKey;} 
} 

Или что-то в этом роде.

+0

Я бы просто расширил 'TreeMap ', переопределить' put' для записи 'lastAddedKey' и добавить метод' K getLastAddedKey'. –

+0

Я собирался предположить, что, но не хотел, чтобы проголосовать за предложение наследования по составу. –

Смежные вопросы