Hi Leute,
ich komme gerade gar nicht mit einer Teilufgabe zurecht. Also ich habe folgendes Programm mit entsprechenden Klassen:
Und dazu diese Aufgabe:
Implementieren Sie die main-Methode der Klasse Main. Die main-Methode soll die Listen Implementierungen ArrayList und LinkedList in allen drei Szenarien mittels der Benchmark-Objekte vergleichen. Drucken Sie das Attribut report der Benchmarks auf die Konsole (mit System.out.println).
Vielleicht simpel aber ich kam mit ArrayList nie wirklich zurecht und hab absolut keine Ahnung, wie ich vorgehen soll. Vielleicht kann mir ja einer helfen. Ich sitze jetzt schon seit fast 3 Stunden hier und komm nicht weiter, vielleicht hab ich gerade auch nur eine Denkblockade :/
LG
ich komme gerade gar nicht mit einer Teilufgabe zurecht. Also ich habe folgendes Programm mit entsprechenden Klassen:
Java:
/**
* A sequence of operations on objects of type T
* @author anton
*
* @param <T> objects I work on
*/
public abstract class Scenario<T> {
/**
* Run the benchmark on the given target.
* @param target to benchmark
*/
abstract void run(T target);
/**
* @return Scenario name
*/
abstract String name();
/**
* Run the benchmark on the given target
* and return the runtime.
* @param target to benchmark
*/
public final String measureRunTime(T target){
long start = System.currentTimeMillis();
run(target);
return (System.currentTimeMillis() - start)+"ms";
}
}
Java:
import java.util.List;
/**
* A scenario on {@link java.util.List}
* consisting of appending thousands of elements to the list.
*
* @author anton
*
*/
public class AddScenario extends Scenario<List<Integer>> {
/**
* Number of elements to add
*/
public static final int NUM_ELEMS = 10000;
@Override
public void run(List<Integer> target) {
for(int i = 0; i < NUM_ELEMS; ++i) {
target.add(NUM_ELEMS - i);
}
}
@Override
public String name() {
return "add";
}
}
Java:
import java.util.List;
public class Benchmark<T>{
public final String report;
public final String nameOfFastesImplementation;
public Benchmark(Scenario<T> scenario, List<T> implementations){
String report = "CHANGE ME\nCHANGE ME\nCHANGE ME";
String nameOfFastesImplementation="CHANGE ME";
//run scenario on every implementation and store results
this.report=report;
this.nameOfFastesImplementation=nameOfFastesImplementation;
}
/**
* Transforms an implementation
* into its name.
* You do not have to understand how it works.
*/
private static String nameOfImplementation(Object implementation){
String[] parts = implementation.getClass().getName().split("\\.");
return parts[parts.length-1];
}
}
Java:
import java.util.List;
public class GetScenario extends Scenario<List<Integer>> {
@Override
public void run(List<Integer> target) {
}
@Override
public String name() {
return "get";
}
}
Java:
import java.util.List;
public class InsertScenario extends Scenario<List<Integer>> {
@Override
public void run(List<Integer> target) {
//do something
}
@Override
public String name() {
return "insert";
}
}
Und dazu diese Aufgabe:
Implementieren Sie die main-Methode der Klasse Main. Die main-Methode soll die Listen Implementierungen ArrayList und LinkedList in allen drei Szenarien mittels der Benchmark-Objekte vergleichen. Drucken Sie das Attribut report der Benchmarks auf die Konsole (mit System.out.println).
- Beachten Sie, dass die Liste der Implementierungen folgende Reihenfolge hat: ArrayList, LinkedList
- Geben Sie die Benchmark-Ergebnisse der Szenarien in der folgenden Reihenfolge aus: AddScenario, InsertScenario, GetScenario
- Erzeugen Sie für jedes Scenario neue Listen (damit diese immer unbenutzt sind)
Vielleicht simpel aber ich kam mit ArrayList nie wirklich zurecht und hab absolut keine Ahnung, wie ich vorgehen soll. Vielleicht kann mir ja einer helfen. Ich sitze jetzt schon seit fast 3 Stunden hier und komm nicht weiter, vielleicht hab ich gerade auch nur eine Denkblockade :/
LG
Zuletzt bearbeitet: