ArrayList add no aumenta la lista

Estoy tratando de resolver el problema de 8 rompecabezas usando la búsqueda heurística. Estoy usando una matriz 3 * 3 para representar una posibilidad. El código no está completo, pero cuando intento agregar el elemento explorado al conjunto explorado (que es una ArrayList), solo actualiza el elemento actual en el conjunto explorado en lugar de agregar un elemento más al final. Cuando intento imprimir todos los elementos en el conjunto explorado, siempre hay un solo elemento (actualizado en cada iteración). Me pregunto qué tiene de malo mi código. ¡¡Gracias!!

public static void printexplored(ArrayList<int[][]> explored){
        //System.out.println("the size of the explored set is " + explored.size());
        System.out.println("the explored set is...");
        while(explored.isEmpty() == false){
            int[][] temp = explored.remove(0);
            for(int i = 0; i < 3; i++){
                for(int j = 0; j < 3; j++){
                    System.out.print(temp[i][j]);
                }
                System.out.println();
            }
            System.out.println();
        }
    } 


public static boolean heuristicSearch(int initialState[][]){
        Queue<int[][]> frontier = new LinkedList<int[][]>();
        frontier.add(initialState);
        ArrayList<int[][]> explored = new ArrayList<int[][]>();
        int f_score = 0;
        //int count = 0;

        while(frontier.isEmpty() == false){

            int[][] temporaryState = new int[3][3]; 

            temporaryState = frontier.remove();
            int indexX = blankIndexX(temporaryState);
            int indexY = blankIndexY(temporaryState);

            explored.add(temporaryState);

            printexplored(explored);
Respuesta 1

Su código está incompleto, pero una cosa que se destaca de inmediato es que está agregando y eliminando elementos a la lista explorada al mismo tiempo. Ver comentarios a continuación:

public static void printexplored(ArrayList<int[][]> explored){
        //System.out.println("the size of the explored set is " + explored.size());
        System.out.println("the explored set is...");
        while(explored.isEmpty() == false){

//---->YOU REMOVED THE ELEMENT WHICH WAS ADDED EARLIER HERE:

            int[][] temp = explored.remove(0);
            for(int i = 0; i < 3; i++){
                for(int j = 0; j < 3; j++){
                    System.out.print(temp[i][j]);
                }
                System.out.println();
            }
            System.out.println();
        }
    } 


public static boolean heuristicSearch(int initialState[][]){
        Queue<int[][]> frontier = new LinkedList<int[][]>();
        frontier.add(initialState);
        ArrayList<int[][]> explored = new ArrayList<int[][]>();
        int f_score = 0;
        //int count = 0;

        while(frontier.isEmpty() == false){

            int[][] temporaryState = new int[3][3]; 

            temporaryState = frontier.remove();
            int indexX = blankIndexX(temporaryState);
            int indexY = blankIndexY(temporaryState);

    //---->YOU ARE ADDING AN ELEMENT HERE BUT REMOVING IT LATER IN THE THE 
    //printexplored METHOD:

            explored.add(temporaryState);

            printexplored(explored);
Respuesta: 2

Tengo una aplicación cliente-servidor, en el lado del cliente tengo un botón para recibir un marco con una tabla dentro del servidor. Si paso el marco con otros jComponents (JButton, JTextField) funciona ...

¿Tiene ARCore un sistema de partículas (sin usar Unity)? Ya estoy usando ViroCoreAR pero ahora, quiero usar ARCore pero no sé si ARCore tiene un sistema de partículas como ViroCoreAR o incluso ARKit para (...

Estoy enfrentando un problema extraño solo en Chrome. Recibo una imagen del servidor que funciona bien en Firefox, pero en Chrome la imagen se carga por una vez y luego se muestra como una imagen rota. En consola de ...

He escaneado la mayor cantidad de información posible sobre esto y he encontrado este AVISO: Se requieren los servicios de Google Play para compilar y ejecutar este ejemplo. Se lanzará pronto. Por favor, consulte https: // ...