用java 对一个可以转成未知层数的list的字符串取最里面一层的一个数组不要要字符切割等等方法
这个问题涉及到递归,需要写一个递归函数来处理。
假设我们有一个可以转成未知层数的list的字符串如下:
String str = "[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]";
我们需要取最里面一层的一个数组,可以写一个递归函数来实现:
public static Object getInnermostArray(Object obj) {
if (obj instanceof List) {
List list = (List) obj;
if (!list.isEmpty()) {
Object inner = list.get(0);
return getInnermostArray(inner);
}
} else if (obj.getClass().isArray()) {
Object[] array = (Object[]) obj;
if (array.length > 0) {
Object inner = array[0];
return getInnermostArray(inner);
}
} else {
return obj;
}
return null;
}
这个函数接受一个Object类型的参数,可以是一个List或一个数组,然后递归处理这个参数,直到找到最里面的一个数组,然后返回这个数组。
我们可以将字符串转换成一个Object对象,然后传给这个函数:
String str = "[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]";
Object obj = new Gson().fromJson(str, Object.class);
Object innermostArray = getInnermostArray(obj);
System.out.println(Arrays.toString((Object[]) innermostArray));
这样就可以得到最里面的一个数组了。注意,这里用到了Google的Gson库来将字符串转换成一个Object对象。
原文地址: https://www.cveoy.top/t/topic/bqZM 著作权归作者所有。请勿转载和采集!