2 回答

TA貢獻1789條經驗 獲得超8個贊
當我嘗試測試 2 個 ArraysLists 時出現錯誤。似乎錯誤是在我的 removeEndWith_at 方法中說“toArray() 未定義”。你們能給我一個建議如何測試這兩個 ArraysList 嗎?
謝謝。
Java 版本:jdk-10.0.2
JUnit:5
[ArrayListIterator 類]
import java.util.Iterator;
import java.util.List;
public class ArrayListIterator {
/**
* @param wordsAl : list of words
*/
public List<String> removeEndWith_at(List<String> wordsAl) {
Iterator<String> iterator = wordsAl.iterator();
while (iterator.hasNext()) {
if (iterator.next().endsWith("at"))
iterator.remove();
}
return wordsAl;
}
}
[ArrayListIteratorTest 類]
import static org.junit.Assert.assertArrayEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.Test;
class ArrayListIteratorTest {
ArrayListIterator alIterator = new ArrayListIterator();
List<String> actualWords = Arrays.asList("Apple", "Bat", "Orange", "Cat");
@Test
void testremoveEndWith_at() {
actualWords = alIterator.removeEndWith_at(actualWords);
List<String> expectedvalue = Arrays.asList("Apple", "Orange");
assertArrayEquals(expectedvalue.toArray(), actualWords.toArray());
}
}看著那(這
Arrays.asList() 創(chuàng)建的 List 上的 remove() 拋出 UnsupportedOperationException
Arrays.asList()
方法只是在原始元素周圍創(chuàng)建一個包裝器,并且在這個包裝器上沒有實現改變其大小的方法。
另請查看我的方法實現removeEndWith_at。它比你的版本簡單
/**
* @param wordsAl : list of words
*/
public List<String> removeEndWith_at(List<String> wordsAl) {
wordsAl.removeIf(s -> s.endsWith("at"));
return wordsAl;
}
添加回答
舉報