gpt4 book ai didi

Java:如何创建一个接受第一个元素的列表的列表 cons

转载 作者:行者123 更新时间:2023-12-01 16:45:29 28 4
gpt4 key购买 nike

当我创建一个Java列表并且我希望头部是一个列表时,它应该打印[[-1,0],1,2,3,4]还是可以,它只保留子列表[-1 , 0] 作为两个独立的元素,例如 [-1, 0, 1, 2,3,4],以及如何获得第一个结构作为答案。

最佳答案

从你的帖子中我猜你是在问如何在 Java 中创建一个包含列表和非列表元素的列表“构造”。

在 Java 中,列表/数组的所有元素都需要具有相同的类型。在您发布的示例( [[-1,0],1,2,3,4] )中,元素并非都是同一类型。你所拥有的是:[List<Integer>, Integer, Integer, Integer, Integer] 。第一个是不同的,这在 Java 中是不允许的。

因此,您需要做的就是使列表/数组的所有元素都具有相同的类型。

对于您的情况,列表中只有整数,最简单的方法是将类型更改为:[List<Integer>, List<Integer>, List<Integer>, List<Integer>, List<Integer>] (使用您的具体值: [[-1,0],[1],[2],[3],[4]] )。而不是 List<Integer> 的列表 Integer ,您现在有一个仅包含 List<Integer> 的列表(您的某些列表碰巧只包含 1 个元素,但这没关系)。

这称为“二维列表”,具体取决于您是否想使用数组或java.util.List对其进行编码。您可以通过以下方式之一对其进行编码:

// with arrays

int[] myTwoDarr = int[5][];
myTwoDarr[0] = new int[]{-1, 0};
myTwoDarr[1] = new int[]{1};
myTwoDarr[2] = new int[]{2};
myTwoDarr[3] = new int[]{3};
myTwoDarr[4] = new int[]{4};

// With Lists

List<List<Integer>> myList = new LinkedList<>();
List<Integer> nestedList1 = new LinkedList<>();
nestedList.add(-1);
nestedList.add(0);
myList.add(nestedList1);
List<Integer> nestedList2 = new LinkedList<>();
nestedList2.add(1);
myList.add(nestedList2);
...etc...

现在,如果您的列表中绝对必须包含不同类型的数据,则可以创建 Object 的列表相反。

在 Java 中 Object是所有非原始类型都继承自的类型。因此,只要某物不是原语,它就是 Object并且可以进入 Object 的列表。这将允许您将任何类型的数据放入列表的元素中。使用Object允许您拥有所有相同类型的列表,如下所示:[Object, Object, Object, Object, Object] 。但是,现在 Java 不知道您实际存储在元素中的特定类型,因此在获取它们时需要进行类型转换。

这是一个使用 java.util.List 的示例:

List<Object> myList = new LinkedList<>();
List<Integer> nestedList = new LinkedList<>();
nestedList.add(-1);
nestedList.add(0);
myList.add(nestedList);
myList.add(1);
myList.add("a string");

// You need to cast when taking elements out of the list.
List<Integer> newNest = (List<Integer>) myList.get(0);
Integer myInt = (Integer) myList.get(1);
String myString = (String) myList.get(2);

由于所有基本数据类型都是相同的 ( Integer/int ),我建议避免使用 Object list 方法并使用 2D 列表。不进行所有这些转换会更简单且不易出错。

关于Java:如何创建一个接受第一个元素的列表的列表 cons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61786975/

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