Servus,
ich wollte mal fragen ob es eine einfachere Möglichkeit gibt um zu prüfen ob es einen Eintrag in einer ArrayList mit Objekten gibt.
Ich habe eine ArrayList vom Typ GpsData
Das Objekt GpsData
zum "Befüllen" der ArryList
Soweit kein Problem, überprüfen ob es ein Objekt schon gibt da wollte ich jetzt wissen ob das evtl besser bzw einfacher geht. Ich mache das über Streams und Filter
und hier die Methode checkIfChallSignIsCached
Also passt das so oder sollte man es evtl anders lösen ?
ich wollte mal fragen ob es eine einfachere Möglichkeit gibt um zu prüfen ob es einen Eintrag in einer ArrayList mit Objekten gibt.
Ich habe eine ArrayList vom Typ GpsData
Java:
public ArrayList<GpsData> gpsDataArrayList = new ArrayList<GpsData>();
Das Objekt GpsData
Java:
public class GpsData {
private String dmrId = "";
private String callSign = "";
private int lastActive = 0;
public GpsData (String dmrId, String callSign, int lastActive){
setDmrId(dmrId);
setCallSign(callSign);
setLastActive(lastActive);
}
/**
* @return the dmrId
*/
public String getDmrId() {
return dmrId;
}
/**
* @param dmrId the dmrId to set
*/
public void setDmrId(String dmrId) {
this.dmrId = dmrId;
}
/**
* @return the callSign
*/
public String getCallSign() {
return callSign;
}
/**
* @param callSign the callSign to set
*/
public void setCallSign(String callSign) {
this.callSign = callSign;
}
/**
* @return the lastActive
*/
public int getLastActive() {
return lastActive;
}
/**
* @param lastActive the lastActive to set
*/
public void setLastActive(int lastActive) {
this.lastActive = lastActive;
}
}
zum "Befüllen" der ArryList
Java:
this.gpsDataArrayList.add(new GpsData(dmrid, call, getUnixTime()));
Soweit kein Problem, überprüfen ob es ein Objekt schon gibt da wollte ich jetzt wissen ob das evtl besser bzw einfacher geht. Ich mache das über Streams und Filter
Java:
GpsData cachedCallSign = checkIfChallSignIsCached(dmrid);
if(cachedCallSign != null){
return cachedCallSign.getCallSign();
}
und hier die Methode checkIfChallSignIsCached
Java:
private GpsData checkIfChallSignIsCached(String dmrid){
List<GpsData> result = this.gpsDataArrayList.stream()
.filter(line -> line.getDmrId().equals(dmrid))
.distinct()
.sorted(Comparator.comparing(GpsData::getCallSign))
.collect(Collectors.toList());
for (GpsData entry : result){
if(entry.getDmrId().equals(dmrid)){
return entry;
}
}
return null;
}
Also passt das so oder sollte man es evtl anders lösen ?