簡體   English   中英

我可以將ArrayList中的Java值分配給不同的變量而無需對大小進行硬編碼嗎?

[英]Can I assign Java values from an ArrayList to different variables without hardcoding the size?

我有一個ArrayList,我們會說它最多可以是5號。我想將第一個元素分配給var1,第二個元素分配給var2,第三個元素分配給var3等。

但是,有時ArrayList的項目少於5個,在這種情況下,我不會為某些變量賦值。

所以我的問題是,有沒有比這更好的方法來做到這一點:

if (myArrayList.size() > 0)
    var1 = myArrayList.get(0);
if (myArrayList.size() > 1)
    var2 = myArrayList.get(1);
if (myArrayList.size() > 2)
    var3 = myArrayList.get(2);
if (myArrayList.size() > 3)
    var4 = myArrayList.get(3);
if (myArrayList.size() > 4)
    var5 = myArrayList.get(4);

這個來源肯定是一個糟糕的代碼設計。 如果arraylist不包含該字段(稍后你使用它),你還要初始化變量是什么? 一個更大的例子或者你正在嘗試做什么在這里會有所幫助。 通常只是使用

但我至少可以想到兩種方法:

    switch(myArrayList.size()) {
    case 5:
        var4 = myArrayList.get(4);
    case 4:
        var3 = myArrayList.get(3);
    case 3:
        var2 = myArrayList.get(2);
            // and so on
    }

或者只是使用try / catch。

    try {
        var0 = myArrayList.get(0);
        var1 = myArrayList.get(1);
    }
    catch(IndexOutOfBoundsException ex){
    }

但是大多數情況下,最好使用arraylist本身,並使用您用於變量的默認值來填充它。

最簡單的方法是:

Object[] vars = myArrayList.toArray(new Object[5]);

如果您堅持使用變量var1到var5而不是僅使用數組元素,請將數組元素復制到變量中。 或者,您可以將“= varN”代碼中的所有實例替換為“= myArrayList.get(n)”。

如何使用單獨的數組並為循環中的列表上的相應值分配每個數組的值?

for (i = 0; i<= 5; i++) {
var [i] = myArrayList.indexOf(i);
}

我同意Voo的觀點,這很可能來自糟糕的代碼設計。 但這是我展示我對最終變量和三元表達式的熱愛的機會。 :-) 這個怎么樣? (對於yuks,我假設是一個字符串的ArrayList。)

final Iterator<String> iter = myArrayList.iterator();
final String var1 = iter.hasNext() ? iter.next() : null;
final String var2 = iter.hasNext() ? iter.next() : null;
final String var3 = iter.hasNext() ? iter.next() : null;
final String var4 = iter.hasNext() ? iter.next() : null;
final String var5 = iter.hasNext() ? iter.next() : null;

所描述的設計看起來很丑陋。 您可以使用三元運算符達到預期目的:

var1 = myArrayList.size() > 0 ? myArrayList.get(0) : "null";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM