data
이라는 다른 ArrayList의 인덱스를 포함하는 ind
이라는 Java에서 ArrayList
이 있습니다. 내가 원하는 것은 ind의 각 항목을 다음 다음 항목과 비교하여 그 차이가 숫자, mpd
보다 낮은 지 확인하는 것입니다. 차이가 더 큰 경우 다음 항목으로 이동하십시오. 낮은 경우 data.get(index)
이 가장 낮은 인덱스를 삭제하십시오. 기본적으로, 나는 최고봉을 찾으려고 노력합니다. 나는 그것이 목록에서 항목을 제거하는 가장 좋은 방법이 아니다 알고ArrayList의 뺄셈
for(int i = 0; i<ind.size()-1; i++) {
if (ind.get(i) != -1) {
for (int j = i + 1; j < ind.size(); j++) {
if ((ind.get(j) - ind.get(i)) <= mpd) {
if (x.get(ind.get(i)) >= x.get(ind.get(j))) {
ind.set(j, -1);
} else {
ind.set(i, -1);
break;
}
} else {
break;
}
}
}
}
ind.removeAll(Collections.singleton(-1));
, 그러나 이것은 처음에 일을했다 :
내 첫 번째 방법이 있었다.
그러나 나는 이것을 수행하는 훨씬 더 좋은 방법이 있어야한다는 것을 알고 있습니다. 이 범위를 벗어났습니다 마지막 비교를 위해, 물론 대단한
ind.removeIf(indices -> ((ind.get(indices+1) - ind.get(indices)) <= mpd));
을하지만 : 그래서 어떤 시련을 수행 한 후,이에 도착. 그리고 그것은 내가 의미하지 않는 다른 목록의 항목 목록에서의 succesors, 그 후 자신의 가치를 비교할 수있는 방법이 있나요
(x.get(ind) vs x.get(ind+1))
가장 높은 요소를 삭제 비교를하지 않습니다 루프를위한 이중? 미리 감사드립니다.
편집 :
어떤 생각을하고 후에, 나는이 지수는 공업의 값을 포함하고 있기 때문에이 가능 확실하지 않다, 그래서 indices+1
을 할 경우 단지 하나를 추가 할 수 있지만 다음 값을받지 않습니다 , 그리고 당신은 정말에만 반복되는 현재 인덱스를 제거 할 수로 removeIf을 사용할 수 없습니다
ind.removeIf(indices -> (indices + 1 < ind.size() && (ind.get(indices) - ind.get(indices + 1)) <= mpd));
가장자리를 벗어나지 않도록 한 요소를 일찍 정지시킬 수는 없습니까? –
끝에 색인을 찾았습니까? 찾았습니까? 나는 그들이 다른 결과로 끝날지도 모른다라고 생각한다. –
당신은 현재의 인디안을 현재의 인디안과 비교하려고한다고하지만, 당신의 코드는 현재의 인디안을 그 이후의 모든 인디와 비교하고 있습니다. 귀하의 질문이 끝나면, 당신은 최고봉을 찾고 있다고 말합니다. 나는 그 문제를 완전히 이해하지 못하고있다. –