Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.78 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.  
  7.         runTest(100000);
  8.         runTest(500000);
  9.         runTest(1000000);
  10.  
  11.     }
  12.  
  13.     static void runTest(int size) {
  14.  
  15.         System.out.println("\nКоличество = " + size);
  16.         measureTime(new TestArray(size));
  17.         measureTime(new TestMap(size));
  18.  
  19.     }
  20.  
  21.     static <T extends Tester> void measureTime(T tester) {
  22.  
  23.         Tester collectionTester = null;
  24.  
  25.         if (tester instanceof TestArray) {
  26.             collectionTester = (TestArray) tester;
  27.         } else if (tester instanceof TestMap) {
  28.             collectionTester = (TestMap) tester;
  29.         }
  30.  
  31.         String nameClass = collectionTester.getClass().getName();
  32.  
  33.         loggedTime(collectionTester::insert, nameClass, "заполнение коллекции");
  34.         loggedTime(collectionTester::search, nameClass, "поиск в коллекции");
  35.         loggedTime(collectionTester::delete, nameClass, "удаление из коллекции");
  36.  
  37.     }
  38.  
  39.     static void loggedTime(Procedure procedure, String nameClass, String nameMethod) {
  40.  
  41.         long startTime = System.currentTimeMillis();
  42.  
  43.         procedure.exec();
  44.  
  45.         long endTime = System.currentTimeMillis();
  46.  
  47.         double timeSec = (double) (endTime - startTime) / 1000L;
  48.  
  49.         System.out.println(nameClass + ": " + nameMethod + " - " + timeSec + " сек.");
  50.     }
  51.  
  52. }
  53.  
  54. interface Procedure {
  55.     void exec();
  56. }
  57.  
  58. abstract class Tester {
  59.  
  60.     List<Integer> inArray;
  61.     List<Integer> randArray;
  62.     List<Integer> outArray;
  63.  
  64.     public Tester() {
  65.        this(1000);
  66.     }
  67.  
  68.     public Tester(int elements) {
  69.  
  70.         inArray = new ArrayList<>();
  71.         randArray = new ArrayList<>();
  72.         outArray = new ArrayList<>();
  73.  
  74.         for (Integer i=1; i<=elements; i++) {
  75.             inArray.add(i);
  76.         }
  77.  
  78.         int size = inArray.size();
  79.  
  80.         Random random = new Random();
  81.  
  82.         // В случайные элементы добавляем 10% выборки
  83.         int added = size / 10;
  84.         do {
  85.             Integer x = random.nextInt(size);
  86.             if (!randArray.contains(x)) {
  87.                 randArray.add(x);
  88.                 added--;
  89.             }
  90.         } while (added > 0);
  91.     }
  92.  
  93.     abstract void insert();
  94.     abstract void search();
  95.     abstract void delete();
  96.  
  97. }
  98.  
  99. class TestArray extends Tester {
  100.  
  101.     List<Integer> arrayList;
  102.  
  103.     public TestArray() {
  104.         super();
  105.     }
  106.  
  107.     public TestArray(int i) {
  108.         super(i);
  109.     }
  110.  
  111.     @Override
  112.     void insert() {
  113.  
  114.         arrayList = new ArrayList<>();
  115.         arrayList.addAll(inArray);
  116.  
  117.     }
  118.  
  119.     @Override
  120.     void search() {
  121.  
  122.         List<Integer> outArray = new ArrayList<>();
  123.  
  124.         for (Integer x : randArray) {
  125.  
  126.             int i = arrayList.indexOf(x);
  127.             if (i > -1) {
  128.                 super.outArray.add(arrayList.get(i));
  129.             }
  130.  
  131.         }
  132.  
  133.     }
  134.  
  135.     @Override
  136.     void delete() {
  137.         arrayList.removeAll(super.randArray);
  138.     }
  139. }
  140.  
  141.  
  142.  
  143. class TestMap extends Tester {
  144.  
  145.     Map<Integer, Integer> hashMap;
  146.  
  147.     public TestMap() {
  148.         super();
  149.     }
  150.  
  151.     public TestMap(int i) {
  152.         super(i);
  153.     }
  154.  
  155.     @Override
  156.     void insert() {
  157.  
  158.         hashMap = new HashMap<>();
  159.  
  160.         for (Integer x : super.inArray) {
  161.             hashMap.put(x, x);
  162.         }
  163.     }
  164.  
  165.     @Override
  166.     void search() {
  167.  
  168.         for (Integer x : super.randArray) {
  169.             Integer y = hashMap.get(x);
  170.             if (!(y ==null)) {
  171.                 super.outArray.add(y);
  172.             }
  173.  
  174.         }
  175.  
  176.     }
  177.  
  178.     @Override
  179.     void delete() {
  180.         for (Integer x : super.randArray) {
  181.             hashMap.remove(x);
  182.         }
  183.     }
  184.  
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement