Skip to main content\(
\newcommand{\lt}{<}
\newcommand{\gt}{>}
\newcommand{\amp}{&}
\definecolor{fillinmathshade}{gray}{0.9}
\newcommand{\fillinmath}[1]{\mathchoice{\colorbox{fillinmathshade}{$\displaystyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\textstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptscriptstyle\phantom{\,#1\,}$}}}
\)
Section 14.4 Writing-ArrayLists-WE2-P1
Subgoals for Evaluating ArrayLists.
-
Importing the ArrayList class
-
Before using ArrayList, import it from the java.util package:
import java.util.ArrayList;
-
Declaring an ArrayList variable
-
Determine the type of objects to be stored (use wrapper classes for primitives, e.g., Integer instead of int)
-
Determine the name of the ArrayList variable
-
Use syntax: ArrayList<DataType> name;
-
Instantiating an ArrayList object
-
Use the new keyword with the constructor to create a new ArrayList object
-
Assign to variable using: name = new ArrayList<>();
-
Optionally, initialize with values using: new ArrayList<>(List.of(value1, value2, ...)); (Java 9+)
-
Accessing an element in an ArrayList
-
Determine the index of the element to be accessed
-
Use: listName.get(index) to retrieve the element
-
Ensure the index is within bounds: 0 to listName.size() - 1, otherwise an IndexOutOfBoundsException occurs
-
Changing a value in an ArrayList
-
Determine the index of the element to be changed
-
Determine the new value or expression to assign
-
Use: listName.set(index, newValue) to update the value
-
-
Decide whether accessing all elements, updating, or accessing a subset
-
If accessing only, use an enhanced for (for-each) loop:
-
for (DataType item : listName) - iterates from first to last, storing a copy of each element in item
-
If updating or using indices, use a traditional for loop:
-
Initialize loop control variable to 0 (or listName.size() - 1 for reverse)
-
Set condition: i < listName.size() (or i >= 0 for reverse)
-
Increment or decrement loop control variable appropriately
-
Use listName.get(i) to access or listName.set(i, newValue) to update
-
-
Passing an ArrayList as an argument
-
Check if the method expects an ArrayList argument (check documentation or method signature)
-
Pass the ArrayList variable in the method call
-
Note: changes to the ArrayList in the method will persist (objects are passed by reference)
-
-
Determine that the reference to the list should point to a new ArrayList
-
Left-hand side is the variable name of the original list
-
Right-hand side is the new ArrayList, e.g., new ArrayList<>()
Subsection 14.4.1
Exercises Exercises
1.
Q4: What are the contents of
alpha
after this code has been executed?
import java.util.ArrayList;
ArrayList<Integer> alpha = new ArrayList<>();
Collections.addAll(alpha, 10, 20, 30, 40, 50, 60, 70);
int start = alpha.get(alpha.size() - 1);
for (int i = 1; i < alpha.size(); i++) {
alpha.set(i, alpha.get(i - 1));
}
alpha.set(0, start);
{20, 30, 40, 50, 60, 70, 10}
{10, 20, 30, 40, 50, 60, 70}
{10, 10, 20, 30, 40, 50, 60}
{70, 10, 10, 10, 10, 10, 10}
{10, 10, 10, 10, 10, 10, 10}
2.
Q5: What are the contents of
beta
after this code has been executed?
import java.util.ArrayList;
ArrayList<Integer> beta = new ArrayList<>();
Collections.addAll(beta, 10, 20, 30, 40, 50, 60, 70);
for (int i = 1; i < beta.size(); i++) {
beta.set(i, beta.get(i - 1));
}
{20, 30, 40, 50, 60, 70, 10}
{10, 20, 30, 40, 50, 60, 70}
{10, 10, 20, 30, 40, 50, 60}
{70, 10, 20, 30, 40, 50, 60}
{10, 10, 10, 10, 10, 10, 10}
3.
Q6: What happens when this code is executed on
gamma
?
import java.util.ArrayList;
ArrayList<Integer> gamma = new ArrayList<>();
Collections.addAll(gamma, 10, 20, 30, 40, 50, 60, 70);
for (int i = 0; i < gamma.size(); i++) {
gamma.set(i, gamma.get(i + 1));
}
{20, 30, 40, 50, 60, 70, 70}
{20, 30, 40, 50, 60, 70, 10}
{10, 20, 30, 40, 50, 60, 70}
{10, 10, 20, 30, 40, 50, 60}
IndexOutOfBounds Exception
You have attempted
of
activities on this page.