ヘレン :
私は3つの要素を持つリストを持っています。これは、whileループであると私は、各反復でその値を上書きします。ここでは、コードは次のようになります。
private List<Integer> loadList = new ArrayList<>(3);
.
.
.
while(counter < 10) {
loadList.add(0, taskNum);
loadList.add(1, taskNum);
loadList.add(2, taskNum);
.
.
.
counter++;
}
しかし、コードを実行した後、私はその上書きが起きていないとするたびに新しい要素がリストの最後に追加されて実現しました。例えば:
最初に:= [1 2 3]
その後:= [1 2 3 4 5 6]が、私はそれが= [4 5 6]のようになりたいです
だから私はこのような何かに私のコードを変更しました:
loadList = new ArrayList<>(3);
//initializing
loadList.add(0, 0);
loadList.add(1, 0);
loadList.add(2, 0);
while(counter < 10) {
loadList.set(0, taskNum);
loadList.set(1, taskNum);
loadList.set(2, taskNum);
.
.
.
counter++;
}
しかし、今、私はこのエラーを取得しています:
2018-11-24 13:27:38.298 ERROR [n.f.core.Main] Exception in main
java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:657) ~[na:1.8.0_151]
at java.util.ArrayList.set(ArrayList.java:448) ~[na:1.8.0_151]
at net.floodlightcontroller.mactracker.Mactracker.paramInit(Mactracker.java:137) ~[floodlight.jar:1.2-SNAPSHOT]
at net.floodlightcontroller.mactracker.Mactracker.init(Mactracker.java:205) ~[floodlight.jar:1.2-SNAPSHOT]
at net.floodlightcontroller.core.module.FloodlightModuleLoader.initModules(FloodlightModuleLoader.java:460) ~[floodlight.jar:1.2-SNAPSHOT]
at net.floodlightcontroller.core.module.FloodlightModuleLoader.loadModulesFromList(FloodlightModuleLoader.java:295) ~[floodlight.jar:1.2-SNAPSHOT]
at net.floodlightcontroller.core.module.FloodlightModuleLoader.loadModulesFromConfig(FloodlightModuleLoader.java:235) ~[floodlight.jar:1.2-SNAPSHOT]
at net.floodlightcontroller.core.Main.main(Main.java:61) ~[floodlight.jar:1.2-SNAPSHOT]
何間違っているとどのように私はこの問題を解決することができますか?
離れて渡します:
この行では:
loadList = new ArrayList<>(3);
あなたはそれを定義し、最初のリストの容量は3です。
今、あなただけではなくたい3としてあなたは多くの項目として追加することができます
。しかし、まだあなたのリストは空です。
あなたは使用することはできません。
loadList.set(2, taskNum);
3D位置に項目がない場合。
set(position, item)
項目がですでに存在している場合にのみ有効ですposition
。
だから、使用しadd(item)
、リストの末尾に新しいアイテムを追加する
とset(position, item)
のリストにすでにあるアイテムを交換しますposition
。
また、使用することができますadd(position, item)
で、新しい項目を挿入するためにposition
、これからのアイテムをシフトposition
右へ。