2014-12-24 2 views
-1

У меня есть TreeMap с двойными ключами и значениями Струнные, например:Java находкой X% от TreeMap

TreeMap<Double,String> tm = new TreeMap<Double,String>(); 
tm.put(1,"worst"); 
tm.put(2,"middle"); 
tm.put(3,"best"); 

Мне нужен способ, что я могу получить X% от TreeMap, так, например, в этом ситуация, если я сказал:

получить 33%, тогда «лучше» будет возвращено, и если бы я сказал 66%, тогда «лучший» и средний будет возвращен.

Есть ли простой способ сделать это? Как я могу перебирать назад через свою карту?

+0

Я не думаю, что так с 'TreeMap', потому что это карта. На самом деле это не дерево поиска. Поэтому, чтобы получить ваши значения, вам нужно указать значение ключа _exact_, то есть 1, 2 или 3. – Jared

ответ

-1

вы можете попробовать что-то вроде этого:

// ratio - 0.0 - 1.0 
List<String> getRatio(Map<Double,String> map, double ratio) 
{ 

    List<String> result = new ArrayList<String>(); 
    for (Entry<Double, String> e: map.entrySet()) { 
     double newRatio = (double) result.size()/map.size(); 
     if (newRatio >= ratio) 
      break; 
     result.add(e.getValue()); 
    } 
    return result; 
} 
+0

Как я уже говорил по другому вопросу, это не эффективный способ найти ближайшее соответствие к значению. – Jared

+1

@ Вы не поняли вопроса, OP не ищет ключи или значения, просто возьмите первые N элементов (или первые 33% элементов) массива/карты/независимо. –

+0

Тогда TreeMap не является надлежащей структурой. – Jared

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