usprawnienie działania kodu

0

witam...
mam oto taki kod:

 
  String[] out = new String[20];
        int[] dataSet = new int[10];
        for (int i = 0; i < dataSet.length; i++) {
            dataSet[i] = i * 5;
        }
        System.out.println(Arrays.toString(dataSet));

        for (int j = 0; j < out.length; j++) {
            int i = 0;
            for (i = 0; i < dataSet.length; i++) {
                if (j >= dataSet[i] && j <= dataSet[i + 1]) {
                    out[j] = "pomiędzy: " + String.valueOf(dataSet[i]) + " a " + String.valueOf(dataSet[i + 1]);
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(out));

i nie mam pomysłu jak przyśpieszyć jego działanie:/
Coś takiego mam w mojej aplikacji, w której ten kod jest wielokrotnie powtarzany. Gdy uruchamiam profile'a wyrzuca mi że nad tą metodą procesor spędza spory okres czasu...Może da się to jakoś poprawić...

0

A dataSet jest zawsze posortowany rosnąco ew można go posortować?

Jeśli tak to najprościej jest nie resetować zmiennej i do zera za każdym razem:

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        String[] out = new String[20];
        int[] dataSet = new int[10];
        for (int i = 0; i < dataSet.length; i++) {
            dataSet[i] = i * 5;
        }
        System.out.println(Arrays.toString(dataSet));
        
        int i = 0;
        for (int j = 0; j < out.length; j++) {
            for (; i < dataSet.length; i++) {
                if (j >= dataSet[i] && j <= dataSet[i + 1]) {
                    out[j] = "pomiędzy: " + String.valueOf(dataSet[i]) + " a " + String.valueOf(dataSet[i + 1]);
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(out));
    }
}
0

Z data set jest tak że początkowa wartość będzie miała 0 , końcowa 20 a kolejne liczby w tablicy nie mogą być mniejsze niż poprzednia wartość...
np. [0,3,4,7,itd...]

0

Dzięki wielkie za szybką i skuteczną odpowiedż :)

Z 4223 ms zeszło na 351...

Gratki za to :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1