java - 我可以在不硬编码大小的情况下将 ArrayList 中的 Java 值分配给不同的变量吗?

标签 java arrays list collections arraylist

我有一个 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 本身,并用您原本用于变量的默认值填充它。

关于java - 我可以在不硬编码大小的情况下将 ArrayList 中的 Java 值分配给不同的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436838/

相关文章:

Android - 在 XML(字符串数组)文件中搜索项目

java - 如何在Java程序中访问spring配置文件中定义的路由

java - 将一个Map分配给ImmutableMap后,如何停止或限制重新分配另一个Map

java - 使用JAVA列出HDFS的文件夹和文件

arrays - 在 O(n) 时间内找到未排序数组中两个不相邻元素的最小和?

c# - 如何从 SQL 查询生成 List<String>?

java - 如何在 Java 中使用可变类执行高精度计算?

python - 按模式查找 boolean 掩码

list - F# 将 Array2 转换为列表

python - 为什么空列表在 Python 的 while 循环中评估为 False