En esta tarea he conseguido añadir al final de la lista principal (en mí código es cadenas) las primeras M strings, pero lo que no consigo es eliminarlas de la lista principal. He estado leyendo al respecto del método subList() y hay una cosa que me quedo claro pero que no se hace a la hora de ejecutar mi código y es que, se supone que al borrar los elementos del método subList() también se eliminarían de la lista principal (cadenas). Adjunto código para que podáis leerlo y darme alguna explicación, que se que estoy apunto de resolverlo y no quiero mirar la solución. Llevo atascado un par de días.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//write your code here
ArrayList<String> cadenas = new ArrayList<>();
int N = Integer.parseInt(reader.readLine()); // N es el numero de strings que se almacenarán en el ArrayList
int M = Integer.parseInt(reader.readLine()); // M es el número de cadenas que voy a mover al final del ArrayList
for(int i = 0; i < N; i++){
cadenas.add(reader.readLine());
}
ArrayList<String> subCadenas = new ArrayList<>(cadenas.subList(0, M));
cadenas.addAll(subCadenas);
subCadenas.clear(); // aquí se borran los elementos de la subList pero no de la lista principal (cadenas)
for(String s: cadenas){
System.out.println(s);
}
package com.codegym.task.task07.task0720;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
/*
Shuffled just in time
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//write your code here
ArrayList<String> cadenas = new ArrayList<>();
int N = Integer.parseInt(reader.readLine()); // N es el numero de strings que se almacenarán en el ArrayList
int M = Integer.parseInt(reader.readLine()); // M es el número de cadenas que voy a mover al final del ArrayList
for(int i = 0; i < N; i++){
cadenas.add(reader.readLine());
}
ArrayList<String> subCadenas = new ArrayList<>(cadenas.subList(0, M));
for(int i = 0; i < subCadenas.size(); i++){
cadenas.add(subCadenas.get(i));
}
subCadenas.clear();
for(String s: cadenas){
System.out.println(s);
}
}
}