Ook wrote:
I think this is a bit tougher then the last one I posted (which was quite
simple). I think I'm missing something fundamental. This code runs, but when
I run it and it prints out the contents of the list it shows that all items
in the list have the same value as the last item I added. I expect to see in
the console:
[0] - aaa
[1] - bbb
[2] - ccc
But instead I see
[0] - ccc
[1] - ccc
[2] - ccc
------------------------------------------------------
import java.util.*;
public class Assignment1
{
public static class WordPair
{
String firstWord;
}
public static void main(String[] args)
{
WordPair tempWordPair = new WordPair();You have made a box labelled "tempWordPair", it is empty.
ArrayList<WordPair> wordPairList = new ArrayList<WordPair>();You have made a chest of drawers labelled "wordPairList". All the
drawers are empty.
tempWordPair.firstWord = "aaa";In the box called "tempWordPair" you put a piece of paper with "aaa"
written on it.
wordPairList.add( tempWordPair );into the top drawer of wordPairList you put a piece of paper with "go
see what is in the tempWordPair box" written on it.
tempWordPair.firstWord = "bbb";In the box called "tempWordPair" you put a piece of paper with "bbb"
written on it. The bit of paper with "aaa" written on it is put into the
garbage can and lost.
wordPairList.add( tempWordPair );into the *second* drawer of wordPairList you put a piece of paper with
"go see what is in the tempWordPair box" written on it.
tempWordPair.firstWord = "ccc";In the box called "tempWordPair" you put a piece of paper with "ccc"
written on it. The bit of paper with "bbb" written on it is put into the
garbage can and lost.
wordPairList.add( tempWordPair );into the *third* drawer of wordPairList you put a piece of paper with
"go see what is in the tempWordPair box" written on it.
System.out.println("[0] - " + wordPairList.get(0).firstWord);we go to the chest of drawers labelled wordPairList and look in the top
drawer (drawer 0), we find a bit of paper saying "go see what is in the
tempWordPair box", we do so, we find a bit of paper with "ccc" written
on it.
System.out.println("[1] - " + wordPairList.get(1).firstWord);drawer 1 also refers us to the box containing ccc
System.out.println("[2] - " + wordPairList.get(2).firstWord);drawer 2 also refers us to the box containing ccc
}
}