可变长度对象并使用传统的for循环

时间:2014-09-18 10:39:51

标签: java

在我的一个方法中,我需要将对象作为可变长度参数传递。 但是,首先我需要处理最后一个对象,然后基于许多其他处理将完成。我无法弄清楚如何使用传统的for循环然后索引来为变量参数列表中的每个项使用索引。所以我使用下面的代码。这是将对象引用复制到另一个Array或ArrayList的正确方法吗?否则,首先访问特定对象然后遍历所有其他对象的最佳方法是什么。

 public static int generateConnectedPatterns(String endStr,Moorchana.MoorchanInnerClass...totalPatterns) {


// First copy all the objects to new ArrayList or Array of objects
            ArrayList <Moorchana.MoorchanInnerClass> objectList = new ArrayList<>();
            objectList.addAll(Arrays.asList(totalPatterns));
            //Temporarily use lastObject variable for convenience.
            Moorchana.MoorchanInnerClass lastObject = objectList.get(objectList.size()-1);      
            // Split the last input string into swaras
            ArrayList<Integer> indices = new ArrayList<>();
            ArrayList<String> tempPatternList = new ArrayList<>();

        splitInputPatternIntoArrayList(tempPatternList , indices, lastObject.rawInputString);

         if (Moorchana.validatePresenceInSwaraPool(endStr, lastObject.returnOuterObjectRef().swaraPool) == -1) {
            return (-1);
        }

         // Get the index of the ending String
         int indexofEndStr = lastObject.returnOuterObjectRef().getSwaraIndex(endStr);
         // Now get the number of patterns to be generated.
         int count = lastObject.returnOuterObjectRef().getPatternCount(indices, indexofEndStr);


         // Now Do remaining programming here based on the count.


        return(Constants.SUCCESS);
    }

2 个答案:

答案 0 :(得分:2)

totalPatterns视为数组。

识别最后一个元素:totalPatterns[totalPatterns.length-1]

对于迭代,您可以使用增强的for循环。

for ( Moorchana.MoorchanInnerClass d : totalPatterns){...}

注意:如果您不确定要传递的输入,请在处理数组之前执行空检查。

答案 1 :(得分:2)

varargs基本上是array

检查nulllength后,您可以像使用array一样访问最后一个元素。

另一方面,Arrays.asList会返回固定大小列表,这意味着您将无法在以后操作其大小,因此请注意UnsupportedOperationException s 。

简而言之,您可以将varargs用作array,并在执行必要的检查后引用最后一个元素。