Java-объект в списке не найденJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java-объект в списке не найден

Сообщение Anonymous »

У меня проблема. У меня есть следующий класс:

Код: Выделить всё

public class Cross implements Comparable {

private Long openTime;
private String market;
private String coin;
private String period;
private String metric1;
private String metric2;
private Double close;
private String trend;

public Long getOpenTime() {
return this.openTime;
}

public void setOpenTime(long openTime) {
this.openTime = openTime;
}

public String getMarket() {
return this.market;
}

public void setMarket(String market) {
this.market = market;
}

public String getCoin() {
return this.coin;
}

public void setCoin(String coin) {
this.coin = coin;
}

public String getPeriod() {
return this.period;
}

public void setPeriod(String period) {
this.period = period;
}

public String getMetric1() {
return this.metric1;
}

public void setMetric1(String metric1) {
this.metric1 = metric1;
}

public String getMetric2() {
return this.metric2;
}

public void setMetric2(String metric2) {
this.metric2 = metric2;
}

public Double getClose() {
return this.close;
}

public void setClose(double close) {
this.close = close;
}

public String getTrend() {
return this.trend;
}

@Override
public boolean equals(Object object) {

if (object != null && object instanceof Cross) {
Cross cross = (Cross) object;
return (
openTime.equals(cross.getOpenTime()) &&
market.equals(cross.getMarket()) &&
coin.equals(cross.getCoin()) &&
period.equals(cross.getPeriod()) &&
metric1.equals(cross.getMetric1()) &&
metric2.equals(cross.getMetric2())
);
}

return false;
}

@Override
public int compareTo(Cross o) {
return this.getOpenTime().compareTo(o.getOpenTime());
}

}
Теперь у меня есть список, содержащий 500 объектов этих элементов. Вот первые четыре показанных:

Код: Выделить всё

{ openTime='1504332000000', market='USDT', coin='ETH', period='2h', metric1='EMA12', metric2='EMA26', close='363.7', trend='Down'}
{ openTime='1504663200000', market='USDT', coin='ETH', period='2h', metric1='EMA12', metric2='EMA26', close='325.73', trend='Up'}
{ openTime='1504879200000', market='USDT', coin='ETH', period='2h', metric1='EMA12', metric2='EMA26', close='294.05', trend='Down'}
{ openTime='1505181600000', market='USDT', coin='ETH', period='2h', metric1='EMA12', metric2='EMA26', close='304.41', trend='Up'}
В переменной я сохранил эпоху определенной даты и времени, и с ее помощью я хочу найти первый действительный крест, поэтому я попробовал это:

Код: Выделить всё

private Cross getValidCross(List crossList, LocalDateTime runDateTimeGMT0) {
long searchEpoch = runDateTimeGMT0.toEpochSecond(ZoneOffset.UTC) * 1000;
return crossList.stream().filter(cross -> cross.getOpenTime() < searchEpoch).max(Cross::compareTo).orElse(null);
}
Но этот код возвращает значение null Когда моя эпоха поиска, например: 1514764800000. В списке я вижу несколько объектов, у которых openTime меньше, чем searchEpoch. Результатом, который мне нужен, является крест с самым высоким значением openTime, но он все равно должен быть меньше, чем searchEpoch.
Вот какую ошибку я получаю:< /p>

Код: Выделить всё

runDateTimeGMT0: 2018-01-01T00:00
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at com.hatop.drivers.SimulatorDriver.run(SimulatorDriver.java:297)
at com.hatop.drivers.HatopDriver.main(HatopDriver.java:120)
Caused by: java.lang.NullPointerException: Cannot invoke "com.hatop.models.Cross.getTrend()" because the return value of "com.hatop.drivers.HatopDriver.getValidCross(List, LocalDateTime)"
is null
at com.hatop.strategies.modules.module_java001.run(module_java001.java:186)
... 6 more
Почему мое возвращаемое значение равно нулю?

Подробнее здесь: https://stackoverflow.com/questions/676 ... -get-found
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»