Nie wykonuje się pełny kod lub program został zapętlony.

0

Witam.
Dopiero uczę się języka java, dlatego błąd w kodzie może być błahy.
Poniższy kod, który napisałem nie wykonuje ostatnich linijek kodu "System.out.println("That took " + seconds + " seconds");".
Po różnych testach zauważyłem że kod odpowiedzialny za ten błąd to:

		  for(int j=0; j < m.size(); j++) {
			 
			  nr1 = n.get(j);
			  nr2 = m.get(j);
			  res = nr1 + nr2;
			  x1.add(res);
		  }

Proszę o pomoc jaki powinien być poprawny powyższy fragment kodu.
Za pomoc z góry dziękuję.

package Test;

import java.util.LinkedList;
import java.util.Random;

public class Test{
	  public static void main(String[] args){
		  

		  LinkedList<Float> m = new LinkedList<Float>();
		  Random generator = new Random();

		  for(int i=0; i<1000000; i++) {
		     m.add(generator.nextFloat());
		  }

		  System.out.println("That took ");
		  LinkedList<Float> n = new LinkedList<Float>();

		  for(int j=0; j < m.size(); j++) {
			     n.add(generator.nextFloat());
		  }
	
		  
		  long startTime = System.nanoTime();

		  LinkedList<Float> x1 = new LinkedList<Float>();
		  float nr1;
		  float nr2;
		  float res;
		  for(int j=0; j < m.size(); j++) {
			 
			  nr1 = n.get(j);
			  nr2 = m.get(j);
			  res = nr1 + nr2;
			  x1.add(res);
		  }
		
		  long endTime = System.nanoTime();
		  
		  long duration = (endTime - startTime);
		  double seconds = (double)duration / 1000000000.0;
		  System.out.println("That took " + seconds + " seconds");
	  }

}

1

Po ilu minutach przerwałeś program? U mnie po 5 minutach pętla doszła do j = 80000.

0

Czekałem na wyniki stanowczo krócej. Wiedziałem że LinkedList jest wolniejszy od ArrayList, ale nie sądziłem że to jest aż taka różnica. Po tej zamianie kod wykonuje się poniżej sekundy.

0

Nie zawsze LinkedList będzie wolniejsza od ArrayList. W przypadku częstego wstawiania/usuwania elementów do/ze środka listy (poza końcem listy) będzie zdecydowanie szybsza.

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