2014-10-13 2 views
1

Я пытаюсь создать функцию, которая позволяет вам передать в ArrayList и вернуть элемент max. Я не смог найти правильное решение из-за того, что передаваемый тип данных не является примитивным. Я также попытался преобразовать ArrayList в ArrayList без успеха. Вот мой (неправильный) код:Поиск элемента max в массиве массивов целочисленных массивов

public static void maxArrayListValue(ArrayList<int[]> arrayList) { 
    int maxArrayListValue = arrayList.get(0); // set first arrayList element as highest 

    for (int index=1; index < arrayList.size(); index++) { // cycle through each arrayList element 
     if (maxArrayListValue < arrayList.get(index)){  // if new element is > than old element 
     maxArrayListValue = arrayList.get(index);   // replace with new maxValue 
     maxArrayListIndex = index;       // record index of max element 
     } 
    } 
    return maxArrayListValue; 
} 

Любой вход будет оценен.

ответ

1

Ваш метод ничего не возвращает, и я думаю, что вы хотите итерировать значения в каждом массиве. Что-то вроде,

public static int maxArrayListValue(List<int[]> arrayList) { 
    int maxVal = Integer.MIN_VALUE; 
    for (int[] arr : arrayList) { 
     for (int v : arr) { 
      if (v > maxVal) { 
       maxVal = v; 
      } 
     } 
    } 
    return maxVal; 
} 
+0

Это сработало отлично. Я просто хочу убедиться, что я правильно понимаю это; первый цикл через каждый массив в arraylist, а второй - через каждый элемент в каждом массиве? –

+1

У вас есть «Список », поэтому мы сначала перебираем содержимое 'int []' вашего 'List <>', а затем получаем его! –

1

Вам не нужен цикл. Просто используйте java.util.Collections.max(arrayList);

+0

Я не уверен, что это работает, я думал, что вы можете использовать коллекции только для примитивных типов данных? Я получаю ошибку: «Метод max () в типе Collections не применим для аргументов (ArrayList )». –

+0

Если ваши элементы коллекции не имеют естественного порядка, вы должны предоставить «Компаратор» в качестве второго элемента. –