这个问题涉及到递归,需要写一个递归函数来处理。

假设我们有一个可以转成未知层数的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对象。

用java 对一个可以转成未知层数的list的字符串取最里面一层的一个数组不要要字符切割等等方法

原文地址: https://www.cveoy.top/t/topic/bqZM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录