Note that there are some explanatory texts on larger screens.

plurals
  1. POJava Android : Comparator gets OutOfBoundsException
    primarykey
    data
    text
    <p>I'm not really an expert and can't figure out why is it going off bounds</p> <pre><code>public class ParticipantIndexComparator implements Comparator&lt;Integer&gt; { final List&lt;Participant&gt; participants; public ParticipantIndexComparator(ArrayList&lt;Integer&gt; numbersToSort) { Log.d("MyLog","numbersToSort.size=" + numbersToSort.size()); participants = new ArrayList&lt;Participant&gt;(); for (int i=0;i&lt;numbersToSort.size();i++) { participants.add(i, competition.participant.get(numbersToSort.get(i))); participants.get(i).comparator = numbersToSort.get(i); } Log.d("MyLog","participants.size="+participants.size()); } @Override public int compare(Integer i1, Integer i2) { Log.d("MyLog","in compare: participants.size=" + participants.size() + "i1=" + i1 + " i2=" + i2); long l1 = participants.get(i1).kpTime.get(kpSelected); long l2 = participants.get(i2).kpTime.get(kpSelected); return Long.valueOf(l1).compareTo(Long.valueOf(l2)); } } </code></pre> <p>well , my first Log shows me <code>participants.size=8.</code> Second Log shows me <code>participants.size=8.</code> third Log shows me <code>participants.size=8, i1=13 i2=14.</code></p> <p>Why??? Why is it 13 and 14 when I checked size at every step and it's always 8 - I can't understand. I'm not an expert and can't figure out this myself</p> <p>here is stacktrace : </p> <pre><code>11-24 02:41:23.612: E/AndroidRuntime(4802): java.lang.IndexOutOfBoundsException: Invalid index 14, size is 8 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.ArrayList.get(ArrayList.java:304) 11-24 02:41:23.612: E/AndroidRuntime(4802): at ru.maximhasanov.skitimer.FinalProtocolActivity$ParticipantIndexComparator.compare(FinalProtocolActivity.java:311) 11-24 02:41:23.612: E/AndroidRuntime(4802): at ru.maximhasanov.skitimer.FinalProtocolActivity$ParticipantIndexComparator.compare(FinalProtocolActivity.java:1) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.TimSort.countRunAndMakeAscending(TimSort.java:320) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.TimSort.sort(TimSort.java:185) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.TimSort.sort(TimSort.java:169) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.Arrays.sort(Arrays.java:2038) 11-24 02:41:23.612: E/AndroidRuntime(4802): at java.util.Collections.sort(Collections.java:1891) 11-24 02:41:23.612: E/AndroidRuntime(4802): at ru.maximhasanov.skitimer.FinalProtocolActivity.sortNumbers(FinalProtocolActivity.java:213) </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload