이것은 예상했던 것보다 어렵습니다. 나는 정렬 된 ArrayList of Strings (단어)를 가지고 있고, 나의 임무는 반복을 제거하고 각 단어의 목록을 출력하고 그 다음에 단어의 반복 번호를 출력하는 것이다. 그것이 내가 예상했던 것보다 더 복잡하다고 말하면 충분합니다. 다른 것을 시도한 후에, 나는 HashMap을 사용하여 단어 (키), 값 (반복)을 저장하기로 결정했다.ArrayList에서 중복 요소 및 개수 반복 제거
이것은 코드입니다. 사전은 정렬 된 ArrayList이고 반복은 HashMap입니다. 내가 이해하지 못하는 몇 가지 이유 (I 초보자 해요)에 대한
public void countElements()
{
String word=dictionary.get(0);
int wordCount=1;
int count=dictionary.size();
for (int i=0;i<count;i++)
{
word=dictionary.get(i);
for (int j=i+1; j<count;j++)
{
if(word.equals(dictionary.get(j)))
{
wordCount=wordCount+1;
repetitions.put(word, wordCount);
dictionary.remove(j--);
count--;
}
}
}
, 나는 (j--) 방법 (1)에 의한 변수 J으로 감의 dictionary.remove를 호출 후 난을해야하더라도 + 1. 내가 뭘 놓치고 있니? 이 작업을 올바르게 수행하는 방법에 대한 아이디어는 인정 될 것입니다. iterator를 사용하는 것이 가장 좋을지 모르지만, 그것은 훨씬 더 혼란스럽게 될 수 있습니다. 많은 감사.
반복자를 사용하는 것이 좋지 않습니다. –
당신은 그것을 overthinking. 목록을 정렬 할 필요조차 없습니다. 각 단어에 대해 이미지도에 있는지 확인합니다. true이면 맵의 값을 증가시키고, 그렇지 않으면 값을 1로 맵에 추가합니다. 스트림을 사용하면 1 행의 코드에서이를 수행 할 수 있습니다. –