Я запутался в том, использовать ли вложенные циклы для циклического прохождения всех данных или массив списков для хранения всех данных, а затем выводить их с помощью оператора if.Пожалуйста, помогите.
Вы можете решить эту проблему, например, попросить вас найти координаты X и Y, выполнив поиск определенного значения в двумерном массиве.
Вы можете использовать ArrayList из ArrayListхранить вашу матрицу (данные), если количество строк и столбцов произвольно.Но поскольку вашими «координатами» являются «Ранг» и «Год» вместо порядковых чисел, вам также необходимо сохранить значения рангов и лет (для удобства поиска):
ArrayList<String> yearList = new ArrayList<>();
ArrayList<String> rankList = new ArrayList<>();
//populate both arraylist from file
Затем используйте ArrayListArrayList (также возможно использование массива массива) для хранения матрицы данных:
ArrayList<ArrayList<String>> matrix = new ArrayList<ArrayList<String>>();
//Populate the matrix of names from file into matrix;
С последующим использованием вложенного цикла for для перебора матрицы:
for(int x=0; x<matrix.size(); x++)
for(int y=0; y<matrix.get(x).size(); y++){
String currName = matrix.get(x).get(y);
if(currName.equalsIgnoreCase(name))
System.out.println("Year (" + yearList.get(y) + ") Ranked " + rankList.get(x));
}
Однако Если вы используете ArrayList, вы можете использовать indexOf()
для получения индекса, выполнив поиск по имени, что позволяет использовать one for-loop:
for(int x=0; x<matrix.size(); x++){
int yearIdx = matrix.get(x).indexOf(name);
if(yearIdx >= 0)
System.out.println("Year (" + yearList.get(yearIdx) + ") Ranked " + rankList.get(x));
}