У меня есть два образца текста и два кода, которые я хочу объединить, чтобы получить один результат. можем ли мы создать два массива с разной длиной?
начиная с первого:
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/Test.txt");
List<String[]> data = new ArrayList<>();
AtomicReference<String> g1 = new AtomicReference<>("");
Files.lines(path) // UTF-8 file
.map(line -> line.split("\\s+"))
.filter(arr -> arr.length == 3)
.filter(arr -> arr[0].startsWith("A-")
|| (arr[0].isEmpty()
&& !data.isEmpty()))
.forEach(
arr -> {
if (!arr[0].isEmpty()) {
g1.set(arr[0]);
}
System.out.printf("%-7s %5s %5s%n",
g1, arr[1], arr[2], arr[3]);
arr[0] = g1.get();
data.add(arr);
});
for (String[] ary : data) {
System.out.println(Arrays.toString(ary));
}
}
образец текста выглядит так:
START
ELEMENT
G1 G2 G3
A-0 FX 0
FX 1
A-20 FY 0
FY 1
END
второй код :
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/Test.txt");
List<String[]> data = new ArrayList<>();
AtomicReference<String> g1 = new AtomicReference<>("");
Files.lines(path) // UTF-8 file
.map(line -> line.split("\\s+"))
.filter(arr -> arr.length == 4)
.filter(arr -> arr[0].startsWith("A-")
|| (arr[0].isEmpty()
&& !data.isEmpty()))
.forEach(
arr -> {
if (!arr[0].isEmpty()) {
g1.set(arr[0]);
}
System.out.printf("%-7s %5s %5s%n",
g1, arr[1], arr[2], arr[3]);
arr[0] = g1.get();
data.add(arr);
});
for (String[] ary : data) {
System.out.println(Arrays.toString(ary));
}
}
образец текста 2 выглядит так:
DATA
VRRP
G1 G4 G5 G6
A-0 2 B24 96
P1 P2 P3
VC NO
G1 G4 G5 G6
A-20 5 C52 96
P1 P2 P3
VC NO
END
Я хочу сразу получить результат, приведенный ниже, путем объединения двух образцов текста и их кодов (text1 и text2) вместе.
A-0 FX 0
A-0 FX 1
A-20 FY 0
A-20 FY 1
A-0 2 B24
A-20 5 C52
спасибо