[英]How do you write a program to convert degrees to radians from a list in java
所以程序需要做以下事情:
替換以度數指定的角度列表的元素,以將它們轉換為等效的弧度,並且列表的大小保持不變。
這是我迄今為止所嘗試過的:
public static void toRadians(List<Double> t) {
for(int i = 0; i < t.size(); i++) {
Math.toRadians(t.get(i));
}
}
我幾乎被卡住了,因為它由於某種原因不起作用。
嘗試這樣做:
public static void toRadians(List<Double> t) {
for(int i = 0; i < t.size(); i++) {
t.set(i, Math.toRadians(t.get(i)));
}
}
當您使用List#get(int index)
獲取索引為i
的元素值時。 您必須使用一個 setter 方法,即List#set(int index, E element)
,將值分配給具有索引i
元素。
您可以使用replaceAll
來轉換列表中的元素:
public static void toRadians(List<Double> degrees) {
degrees.replaceAll(Math::toRadians);
}
或者,如果您不想更改原始列表,則可以使用map
來創建一個元素已轉換的新列表:
public static List<Double> toRadians(List<Double> degrees) {
return degrees.stream()
.map(Math::toRadians)
.collect(Collectors.toList());
}
您可以通過使用ListIterator
以下說明完成任務:
public static List<Double> convertToRadians(List<Double> t) {
for (final ListIterator<Double> iterator = t.listIterator(); iterator.hasNext(); ) {
final Double element = iterator.next();
iterator.set(Math.toRadians(element));
}
return t;
}
使用 Java 8+(但機制略有不同)執行此操作的簡潔方法是:
public static List<Double> convertToRadians(List<Double> t) {
t.replaceAll(Math::toRadians);
return t;
}
對於您的練習,您無疑希望查看完成此任務的每種方式的時間復雜度和可變性,尤其是添加和刪除列表中每個元素的時間復雜度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.