[英]Arraylist Java showing out index out of bounds
我的目標是創建一個新實例,其中前 2 個元素是原始元素,之后是最后 3 個元素的中位數。例如, [5,2,9,1,7,4,6,3,8]
變為[5,2,5,2,7,4,6,4,6]
。
我解決這個問題的方法是創建 2 個新數組列表,其中一個是從索引 2 開始並具有(i-2,i+1)
的 3 個元素之間的子數組,排序並最后將新子數組的索引 1 放入我的新的數組列表。 但是,這會遇到索引越界錯誤。
import java.util.*;
public class P2J4
{
public static void main (String[]args){
List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
ArrayList<Integer>newarr=new ArrayList<>();
newarr.add(0,items.get(0));
newarr.add(1,items.get(1));
for(int i=2;i<items.size();i++){
List<Integer> sub = items.subList(i-2,i+1);
Collections.sort(sub);
newarr.set(i,sub.get(1));
}
}
}
ArrayList.set
僅更新現有元素。 如果給定的索引超出范圍,它不會 append 元素。 您需要使用ArrayList.add
或預先添加足夠的元素,以便newarr.size() == items.size()
newarr.add(sub.get(1));
import java.util.*;
public class P2J4
{
public static void main (String[]args){
List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
ArrayList<Integer>newarr=new ArrayList<>();
newarr.add(0,items.get(0));
newarr.add(1,items.get(1));
for(int i=2;i<items.size();i++){
List<Integer> sub = items.subList(i-2,i+1);
Collections.sort(sub);
newarr.add(sub.get(1));
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.