我需要一个String 数组的动态数组
。我使用 ArrayList 作为我的集合类型。无论我尝试什么方法,我总是遇到同样的问题:我最后一次调用 add()
导致之前的所有添加都失败。我尝试了多种方法,但仍然遇到同样的问题。
这是我的测试代码:
package tests;
import org.apache.cocoon.xml.XMLUtils;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class TestArray
{
public static void main(String[] args)
{
List<String> array1 = new ArrayList();
String e2[] = new String[2];
// Array 1
array1.clear();
array1.add("A");
array1.add("B");
array1.add("C");
array1.add("D");
int nbEnregArray1 = array1.size();
System.out.println("Nb Enreg Array1 : " +array1.size());
for (int i = 0; i < nbEnregArray1; i++) {
System.out.println("Enreg " + i + " : " + array1.get(i));
}
// ================================
// Array 2
// ================================
ArrayList<String[]> array2 = new ArrayList<>();
array2.clear();
e2[0] = "W";
e2[1] = "X";
array2.add(0, e2);
System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);
e2[0] = "C";
e2[1] = "V";
array2.add(1, e2);
System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);
System.out.println("Array2 : Enregistrement rang 1 " + " : " + array2.get(1)[0] + " / " + array2.get(1)[1]);
e2[0] = "B";
e2[1] = "N";
array2.add(2, e2);
System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);
System.out.println("Array2 : Enregistrement rang 1 " + " : " + array2.get(1)[0] + " / " + array2.get(1)[1]);
System.out.println("Array2 : Enregistrement rang 2 " + " : " + array2.get(2)[0] + " / " + array2.get(2)[1]);
int nbEnregArray2 = array2.size();
System.out.println("Nb Enreg Array2 : " + nbEnregArray2);
for (int i = 0; i < nbEnregArray2; i++) {
System.out.println("Array2 : rang " + i + " : " + array2.get(i)[0] + " / " + array2.get(i)[1]);
}
// ================================
// Array3
// ================================
ArrayList<ArrayList<String>> array3 = new ArrayList<>();
ArrayList<String> a3 = new ArrayList();
array3.clear();
String a31, a32, a33;
a3.clear();
a31 = "A";
a32 = "Z";
a3.add(a31);
a3.add(a32);
array3.add(a3);
a3.clear();
a31 = "E";
a32 = "R";
a3.add(a31);
a3.add(a32);
array3.add(a3);
a3.clear();
a31 = "T";
a32 = "Y";
a3.add(a31);
a3.add(a32);
array3.add(a3);
for (int i = 0; i < array3.size(); i++) {
System.out.println("Array3 : rang " + i + " : " + array3.get(i).get(0) + " / " + array3.get(i).get(1));
}
// ================================
// List
// ================================
List<List<String>> l = new LinkedList<>();
List<String> el = new LinkedList<>();
l.clear();
String l1, l2, l3;
el.clear();
l1 = "A";
l2 = "Z";
l3 = "E";
el.add(l1);
el.add(l2);
el.add(l3);
l.add(el);
el.clear();
l1 = "R";
l2 = "T";
l3 = "Y";
el.add(l1);
el.add(l2);
el.add(l3);
l.add(el);
el.clear();
l1 = "U";
l2 = "I";
l3 = "O";
el.add(l1);
el.add(l2);
el.add(l3);
l.add(el);
for (int i = 0; i < l.size(); i++) {
System.out.println("l : rang " + i + " : " + l.get(i).get(0) + " / " + l.get(i).get(1));
}
}
}
最佳答案
您的问题是您将相同的列表添加了三次,因此您的外部列表最终只包含对同一事物的三个引用。
您需要为每次插入创建一个全新的列表。
关于java - 字符串数组的数组工作不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956698/