Upon instantiation, an ArrayList contains zero elements initially, but elements can be added dynamically using add(). Elements not yet added do not exist until explicitly inserted.
Passing as argument - a copy of the reference to the instantiated ArrayList is passed to the method. This means that any changes made to the elements inside the method persist outside the method. The exception is if the argument is assigned to reference a different ArrayList inside the method.
Q1: The following code is intended to store the sum of all the values in the integer ArrayList list in the variable total. Which of the following code segments can be used to replace /* missing code */ so that the code works as intended?
I. for (int pos = 0; pos < list.size(); pos++)
total += list.get(pos);
II. for (int pos = list.size(); pos > 0; pos--)
total += list.get(pos);
III. int pos = 0;
while (pos < list.size()) {
total += list.get(pos);
pos++;
}
int index = 0;
int count = 0;
int m = -1;
for (int outer = 0; outer < nums.size(); outer++) {
count = 0;
for (int inner = outer + 1; inner < nums.size(); inner++) {
if (nums.get(outer).equals(nums.get(inner)))
count++;
}
if (count > m) {
index = outer;
m = count;
}
} // end outer for
System.out.println(index);
Prints the maximum value that occurs in the ArrayList nums
Q3: The following code is intended to store the largest value in the integer ArrayList list in the variable maxVal. Which of the following best describes the conditions under which the code will not work as intended?
Q4: The following code segments are supposed to find the maximum value in an ArrayList of integers. Assuming that the ArrayList list has been declared and contains valid integer values, which of the following code segments will correctly assign the maximum value in the ArrayList to the variable max?
I. int max = Integer.MIN_VALUE;
for (int value : list) {
if (max < value)
max = value;
}
II. int max = 0;
boolean first = true;
for (int value : list) {
if (first) {
max = value;
first = false;
}
else if (max < value)
max = value;
}
III. int max = list.get(0);
for (int k = 1; k < list.size(); k++) {
if (max < list.get(k))
max = list.get(k);
}
// returns index of first occurrence of val in list after
// position start;
// returns list.size() if val is not found
public int findNext (ArrayList<Integer> list, int val, int start) {
int pos = start + 1;
while ( /* condition */)
pos++;
return pos;
}
For example, the execution of the following code segment should result in the value 4 being printed: