У меня есть 2d Arraylist (2d Arraylist, myBoard
работает хорошо и проверено несколько раз для правильности) и хотел бы вернуть самую длинную последовательность из тех же элементов в списке. Если я позвоню myBoard.toString()
, то результат выглядит следующим образом:Получение горизонтальной самой длинной последовательности элементов.
| 1| 2| 3| 4| 5| 6| 7| 8|
+---+---+---+---+---+---+---+---+
-2 | | | | | | | | |
+---+---+---+---+---+---+---+---+
-1 | | | | | | | | |
+---+---+---+---+---+---+---+---+
0 | | | | | | | | |
+---+---+---+---+---+---+---+---+
1 | A| A| A| | | | | |
+---+---+---+---+---+---+---+---+
2 | | | | | | | | |
+---+---+---+---+---+---+---+---+
3 | | | | | | | | |
+---+---+---+---+---+---+---+---+
4 | | | | | | | | |
+---+---+---+---+---+---+---+---+
5 | | | | | | | | |
+---+---+---+---+---+---+---+---+
6 | B| B| B| B| B| B| | |
+---+---+---+---+---+---+---+---+
7 | | | | | | | | |
+---+---+---+---+---+---+---+---+
8 | C| C| D| C| C| C| C| C|
+---+---+---+---+---+---+---+---+
9 | | | | | | | | |
+---+---+---+---+---+---+---+---+
Я знаю, что ArrayLists начинаются с 0 и имеют несколько других методов, которые обрабатывают этот случай. Но моя забота - мой код не работает, чтобы получить самую длинную последовательность с доски по горизонтали. Самая длинная последовательность в row 6
, но она возвращает [(0,1,), (0,1,), (0,2,), (0,2,), (0,5,), (0,5,), (0,6,), (0,6,), (0,7,), (0,7,)]
. Почему он возвращает [(0,1,), (0,1,), (0,2), (0,2), (0,5), (0,5,), (0, 6,), (0,6,), (0,7,), (0,7,)] ??
public List<RowAndCol<T>> horizontalSequence(){
ArrayList<RowAndCol<T>> myList = new ArrayList<RowAndCol<T>>();
int max = 1;
int currentCount = 1;
for(int i = 0; i < myBoard.size(); i++){
for(int j = 1; j < myBoard.get(i).size(); j++){
if(myBoard.get(j - 1).equals(myBoard.get(j))){
RowAndCol<T> tempObject1 = new RowAndCol<T>(i, j, myBoard.get(i).get(j));
RowAndCol<T> tempObject2 = new RowAndCol<T>(i, j-1, myBoard.get(i).get(j-1));
myList.add(tempObject1);
myList.add(tempObject2);
currentCount++;
}
else{
if(currentCount > max){
if(currentCount > myList.size()){
max = currentCount;
}
currentCount = 1;
}
}
}
return myList;
}
RowAndCol
класс имеет только конструктор, который принимает (int row, int col, T e)
, getters
и toString()
методу
public String toString(){
String result = "";
if(this.e instanceof String){
String element = (String)this.e;
result = "(" + this.row + "," + this.col + "," + element + ")";
}
else if(this.e instanceof Integer){
Integer element = (Integer)this.e;
result = "(" + this.row + "," + this.col + "," + element + ")";
}
else if(this.e instanceof Character){
Character element = (Character)this.e;
result = "(" + this.row + "," + this.col + "," + element + ")";
}
return result;
}
tempObject1 и tempObject2 являются тот же объект. У вас есть тот же самый элемент дважды в списке. Почему вы бы поставили два раза один и тот же элемент? –
@ TheCodingMonk, я изменил его, но все же дает мне тот же результат, что и я упоминал –