Каков наиболее эффективный способ выполнить эти сравнения? - PullRequest
0 голосов
/ 07 февраля 2020

Я делаю торговца процессором, который предлагает 2 сделки. Я разработал основы, но заблудился, заставляя логи c избегать «плохих» предложений между сделками (например, у сделки 1 есть A и B для C и D, у сделки 2 есть C и D для B и A).

Какой самый эффективный способ сравнить две сделки? Я экспериментировал с операторами if, но это быстро мешает и заставляет программу работать в 10 раз медленнее при загрузке новых сделок (как я и ожидал). Вот мой текущий код:

import java.util.Random;
import javax.swing.ImageIcon;

public class Trades
{
    public void setRandomTrade(int toBeRandomized, Components.newLabel[] tradeSlots, String[] cArray) {
        if (toBeRandomized == 1 || toBeRandomized == 3) {
            RandomImage(0, 4, tradeSlots, cArray);  // Force First Trade before checking for duplicates
            while(TradeSlotExists(0, tradeSlots, cArray) == true) {
                RandomImage(0, 4, tradeSlots, cArray);  //Randomize First
            }
        }      
        if (toBeRandomized == 2 || toBeRandomized == 3) {
            RandomImage(4, 8, tradeSlots, cArray);  // Force Second Trade before checking for duplicates
            while(TradeSlotExists(4, tradeSlots, cArray) == true) {
                RandomImage(4, 8, tradeSlots, cArray);  //Randomize Second
            }
        }
    }

    public void RandomImage(int beg, int end, Components.newLabel[] tArray, String[] cArray) {
        for (int i=beg; i<end; i++) {
            int rand = new Random().nextInt(5);
            tArray[i].setIcon(new ImageIcon(getClass().getResource(cArray[rand])));
            tArray[i].imgNum = rand;
        }
    }

    public boolean TradeSlotExists(int key, Components.newLabel[] tradeSlots, String[] cArray) {
        int keyEnd = key + 4;
        while (key < keyEnd) {
            for (int i=key; i<keyEnd; i++) {
                if ((i != key) && (tradeSlots[i].imgNum == tradeSlots[key].imgNum)) {
                    return true;
                }
            } key += 1;
        } return false;
    }
}

Снимок экрана моей программы для визуального контекста и ясности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...