Vergleichen von zwei Arrays

Dechasa

Mitglied
Hey Leute,

Ich hab ein Problem, ich möchte zwei Arrays ergleichen.
Ein neues und ein altes, allerdings weiß ich nicht, wie ich das alte Array abspeichern soll, um es später noch zu erwenden.

Ich bastel grade an meiner eigenen UsbHotPlug Klasse, die alle 0,5 sec die Usb-Ports überprüft und dann die Liste an USB-Geräten, die vor 0,5 sec, mit der aktuellen Liste vergleicht.
Die Details der einzelnen USB-Geräte hab ich in einer eigenen Klasse (UsbData) gespeichert.

Die Methode um die Usb-Geräte und ihre Daten zu erfassen:

Java:
public UsbData[] getConectedDevices(){
        DeviceList devList = new DeviceList();
        int result = LibUsb.getDeviceList(null, devList);
        if (result < 0)throw new LibUsbException("Unable to get device list", result);
        UsbData[] usbData = new UsbData[devList.getSize()];
        int i = 0;
        for(Device dev : devList){
            DeviceDescriptor descriptor = new DeviceDescriptor();
            result = LibUsb.getDeviceDescriptor(dev, descriptor);
            
            usbData[i] = new UsbData();
            usbData[i].setIDProduct(descriptor.idProduct());
            usbData[i].setIDVendor(descriptor.idVendor());
            usbData[i].setIManufaktur(descriptor.iManufacturer());
            usbData[i].setIProduct(descriptor.iProduct());
            usbData[i].setISerialNumber(descriptor.iSerialNumber());
            
            /**
            System.out.println(usbData[i].getIDProduct() + ", "
                                + usbData[i].getIDVendor() + ", "
                                + usbData[i].getIManufaktur() + ", "
                                + usbData[i].getISerialNumber() + ", "
                                + usbData[i].getIProduct() );  
            **/                  
            
            i++;
        }
        System.out.println("\n");
        return usbData;
    }

Und Hier ist die Schleife für die regelmäßige abfrage:

Java:
public void run(){
        while(hotPlugEnabled){
            try{
                sleep(500);
            } catch(InterruptedException e){}
            //Hier soll dann die Methode zum ergleichen der alten und der neuen Liste rein.
            // z.B: compareList(UsbData[] oldList, UsbData[] newList);
        }      
    }

Vielen Dank für eure Hilfe

Dechasa
 
Zuletzt bearbeitet von einem Moderator:
Java:
private UsbData[] devices;

public void run(){
        while(hotPlugEnabled){
            try{
                sleep(500);
            } catch(InterruptedException e){}

            UsbData[] actualList = getConnectedDevices();
            if(devices == null) { // für den 1.Durchlauf
                  devices = actualList;
            } else {
                  // dein vergleich von actualList mit devices;
            }
        }    
    }

Wie man Arrays vergleicht findet man sehr leicht mit hilfe von google 🙂
 
Ich bekomm das mit dem ergleichen einfach nicht hin. Ich hab schon vieles versucht, aber es funktioniert irgendwie nicht.
Die Beispiele waren immer mit int oder String, aber nie mit einer anderen Klasse.
Kann mir da vielleicht jemand helfen.
Meine Klasse UsbData:

Java:
public class UsbData {

    private short idVendor, idProduct;
    private byte iManufaktur, iProduct, iSerialNumber;
  
    public UsbData(){
        idVendor = idProduct = 1;
        iManufaktur = iSerialNumber = iProduct = 1;
    }
  
    public void setIDVendor(short input){
        idVendor = input;
    }
  
    public void setIDProduct(short input){
        idProduct = input;
    }
  
    public void setIManufaktur(byte input){
        iManufaktur = input;
    }
  
    public void setISerialNumber(byte input){
        iSerialNumber = input;
    }
  
    public void setIProduct(byte input){
        iProduct = input;
    }
  
  
  
  
    public short getIDVendor(){
        return idVendor;
    }
  
    public short getIDProduct(){
        return idProduct;
    }
  
    public byte getIManufaktur(){
        return iManufaktur;
    }
  
    public byte getISerialNumber(){
        return iSerialNumber;
    }
  
    public byte getIProduct(){
        return iProduct;
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben