gpt4 book ai didi

java - 从字符串创建嵌套的 ArrayList

转载 作者:行者123 更新时间:2023-12-01 11:03:12 25 4
gpt4 key购买 nike

我希望创建一个 ArrayList,它是嵌套列表的字符串表示形式的精确副本。因此,给定“[4, 9, 12, [1,2,3], [5,6,10], [11,12]]”,列表将是 [4,9,12,[1,2,3] ],[5,6,10],[11,12]]。

static int position =0;

public static ArrayList stringToList(String input) {
List<ArrayList> parsedList = new ArrayList<>();

while(position < input.length()){
char element = input.charAt(position++);


if(element == '['){
parsedList.add(parseListsToString(input));
}else if(element==']'){
break;
}else if(element==','){}
else{
parsedList.add(element);
}

}

return parsedList;
}

我尝试将 parsedList 声明为:ArrayList(ArrayList)(允许递归)和 ArrayList(Integer)(不允许递归)。在我提交的当前代码中,显然是错误的,因为 parsedList 是一个不正确的返回类型,因为它不是 ArrayList。

我相信我解决这个问题的方法是正确的,只是我对ArrayList的理解缺乏,这就是我需要帮助的地方。所以任何建议将不胜感激!提前致谢!

最佳答案

您好,我调试并测试了这个解决方案。

String input = "[4, 9, 12, [1,2,3], 2, [5,6,10], [11,12],2,4 ,[5,6]]"; 
List<ArrayList<Integer>> parsedList = new ArrayList<ArrayList<Integer>>();
int count = -1;
boolean newArray = true;

String element = "";
for(int i = 1; i < input.length()-1; i++){

char temp = input.charAt(i);
element += temp;

if(temp == '['){
parsedList.add(new ArrayList<Integer>());
count++;
element = "";
newArray = false;
}
else if(temp == ']'){
parsedList.get(count).add(Integer.parseInt(element.replaceAll("]",""))); element ="";
newArray = true;

}
else if(temp == ',' && element.length() == 1 ){

element = "";

}
else if(temp == ',' && element.length() != 1){

if(newArray){
parsedList.add(new ArrayList<Integer>());
count++;
}

parsedList.get(count).add(Integer.parseInt(element.replaceAll(",","").replaceAll(" ", "")));
element ="";

}

}

结果为 [[4],[9],[12],[1,2,3],[2],[5,6,10],[11,12],[2],[ 4],[5,6]]。所以基本上你有一个整数数组的数组。

关于java - 从字符串创建嵌套的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33179376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com