<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1768103</guid>
        <pubDate>Sat, 17 Nov 2007 15:35:03 +0000</pubDate>
        <title>Сортированный список пар значений</title>
        <link>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1768103</link>
        <description><![CDATA[Rulikkk: <strong class='tag-b'>wind</strong>, спасибо большое.<br>
Цель - именно ускорение.<br>
Размер дерева -- примерно 50.000 элементов.<br>
Спасибо, было познавательно.]]></description>
        <author>Rulikkk</author>
        <category>Java</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1768019</guid>
        <pubDate>Sat, 17 Nov 2007 14:16:43 +0000</pubDate>
        <title>Сортированный список пар значений</title>
        <link>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1768019</link>
        <description><![CDATA[wind: <strong class='tag-b'>Rulikkk</strong>, если вашей целью не является увеличение производительности имеещегося решения, то ваши вопросы бессмысленны. Если же вы озадачены именно этим, тогда:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=210852&view=findpost&p=1767409'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Rulikkk &#064; <time class="tag-quote__quoted-time" datetime="2007-11-16T15:33:53+00:00">16.11.07, 15:33</time></span><div class='quote '>Мне не нравится, что я использую два поиска. Как оптимальнее?</div></div><br>
Оптимальнее не использовать java.lang.Integer, потому как он immutable. Я бы сделал примерно так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class IntegerHolder {</div><div class="code_line">&nbsp;&nbsp; &nbsp;int value;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">IntegerHolder v = map.put(nt, q);</div><div class="code_line">&nbsp;</div><div class="code_line">if (v != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.value += v.value;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=210852&view=findpost&p=1767409'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Rulikkk &#064; <time class="tag-quote__quoted-time" datetime="2007-11-16T15:33:53+00:00">16.11.07, 15:33</time></span><div class='quote '>Есть что-то быстрее чем TreeMap?</div></div><br>
Вроде нет, но следует учесть, что для небольших наборов данных HashMap по-идее должен работать шустрее. Тут уже вам решать, что важнее - сортировка или быстрая выборка/вставка. Я бы отставил сортировку на тот момент, когда она нужна.<br>
<br>
Кстати, есть очень интересное решение для вас - коллекции <a class='tag-url' href='http://sourceforge.net/projects/trove4j/' target='_blank'>Trove for Java</a>, а именно gnu.trove.TIntObjectHashMap.]]></description>
        <author>wind</author>
        <category>Java</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1767612</guid>
        <pubDate>Fri, 16 Nov 2007 20:42:52 +0000</pubDate>
        <title>Сортированный список пар значений</title>
        <link>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1767612</link>
        <description><![CDATA[s-e-r-g-e: про экономию на поиске 2м наеврно с интегером тяжело чего сделать, а вот если класс в котором есть поле интегер, то для случая присутсвующих значений можно его получить и изменить это поле, а если отсутсвует то просто вставить, обязательно использовать Integer? но это вроде не по жаве вопрос получится]]></description>
        <author>s-e-r-g-e</author>
        <category>Java</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1767409</guid>
        <pubDate>Fri, 16 Nov 2007 15:33:53 +0000</pubDate>
        <title>Сортированный список пар значений</title>
        <link>https://forum.sources.ru/index.php?showtopic=210852&amp;view=findpost&amp;p=1767409</link>
        <description><![CDATA[Rulikkk: Всем доброго времени суток.<br>
Мне нужно сделать сортированный список пар значений &lt;integer, integer&gt;. (сортированный по key. Значение -  value)<br>
Необходимо, чтобы он был оптимален по времени по след. параметрам:<br>
- вставка элемента, а если он есть, то изменение значения.<br>
- изменение значения элемента<br>
- пробег по последовательным элементам, с доступом к их значениям<br>
<br>
Какой стандартный класс посоветуете?<br>
<br>
Предположим, я выбрал класс TreeMap.<br>
Вот так я реализовад вставку элемента. Если же такой элемент есть, то суммировал:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;Integer v = map.put(n,q);</div><div class="code_line">&nbsp;&nbsp; if (v != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; map.put(n,q+v);</div><div class="code_line">&nbsp;&nbsp; }</div></ol></div></div></div></div><br>
Мне не нравится, что я использую два поиска. Как оптимальнее?<br>
<br>
Вот так я реализовал изменение значения (опять два посика) :<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Integer v = map.put(nt,q);</div><div class="code_line">if (v != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;map.put(nt,q+v);</div><div class="code_line">}</div></ol></div></div></div></div><br>
как оптимальнее?<br>
<br>
И наконец так я сделал пробег по последовательным элементам с суммированием их значений.<br>
это оптимально?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SortedMap&#60;Integer, Integer&#62; sm = map.subMap(nf, nt);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int s = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (Map.Entry&#60;Integer, Integer&#62; e : sm.entrySet()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s+=e.getValue();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
Есть что-то быстрее чем TreeMap?]]></description>
        <author>Rulikkk</author>
        <category>Java</category>
      </item>
	
      </channel>
      </rss>
	