当前位置: 首页 > 知识库问答 >
问题:

3维数组列表论证不适用

慕凌
2023-03-14

我正试图用Java编写一个关于制表方法的程序。对于那些不熟悉的人来说,制表方法中的一个步骤是将具有相同数字1的二进制文件分组。因此,我们将具有相同数字1的组放在arraylist中。因此,如果我们有五个不同的组(第一个组包含no 1的数字,第二个组包含1的数字,等等),我们将它们存储在另一个arraylist中。因此,arraylist是arraylist中的一个。

在制表法中,我们将每组的元素与前一组的元素进行比较。每次我们从下一组中找到一个相似的元素(正好有一个数字不同),然后我们将它们放入一个新的列表中。此列表再次根据1的数字分组。因此,我们有一个arraylist的arraylist的arraylist的arraylist。

这里是我代码的一部分:

allTables.add(new ArrayList<ArrayList<String>>().set(count, new ArrayList<String>().add(mintermBinaries[i])));

allTables只是arraylist中的arraylist。整数计数确定二进制文件的1位数,并将其设置在该索引中,最后mintermBinaries[i]是数组的第i个索引,该数组按升序包含所有二进制文件。整个代码都在for循环中。

问题是它无法编译,因为根据Eclipse,参数不适用。我不知道为什么。

在考虑了很多之后,我不确定三维数组是否是一件好事。有人能帮忙吗?解决这个问题的更好方法是什么?

共有2个答案

倪德业
2023-03-14

由于返回结果列表#add()和列表#set()的返回结果与您期望的不同,要使用这样的一行,您需要额外的帮助器方法:

// Appends an item to the end of the list.
// Instead of `boolean`, returns modified list itself
static <T> List<T> add(List<T> list, T item) {
    list.add(item);
    return list;
}

// Sets an item to arbitrary position in `List`, expanding if needed.
// Instead of replaced item, returns modified list itself
static <T> List<T> set(List<T> list, int index, T item) {
    if (list.size() <= index) {
        for (int i = list.size(); i <= index; i++)
            list.add(null);
    }
    list.set(index, item);
    return list;
}

然后,您可以将代码写在一行中:

add(allTables, set(new ArrayList<List<String>>(), count, add(new ArrayList<String>(), mintermBinaries[i])));

虽然这不是很优雅,甚至在您的特定情况下可能会令人困惑(我也更喜欢依次调用List.add(). set()),但在某些情况下,这种方法可能会更加干净和高效...

沈俊晤
2023-03-14
new ArrayList<ArrayList<String>>().set(
    count, 
    new ArrayList<String>().add(mintermBinaries[i]))

第二个参数set(),它应该是一个ArrayList

new ArrayList<String>().add(mintermBinaries[i])

此表达式的类型是方法add()返回的值的类型。和add()返回一个布尔值。布尔值不是数组列表

不要试图将所有代码写在一行中。把那个换成

List<ArrayList<String>> listOfLists = new ArrayList<ArrayList<String>>();
ArrayList<String> innerList = new ArrayList<String>();
innerList.add(mintermBinaries[i]);
listOfLists.set(count, innerList);

 类似资料:
  • 按列对数组进行排序,就像我想在这里对最后一行上的值进行排序一样,根据排序结果,同一行中其他列上的数字也可能会发生变化 例如

  • 本文向大家介绍Thinkphp将二维数组变为标签适用的一维数组方法总结,包括了Thinkphp将二维数组变为标签适用的一维数组方法总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了Thinkphp将二维数组变为标签适用的一维数组方法。分享给大家供大家参考。具体实现方法如下: 方法一: 方法二: 方法三: 将读取数据库的内容直接转换为一维数组,该方法大多用于select标签  希望本文所述

  • 问题内容: 我正在尝试将嵌套列表转换为2d数组。 我想把它做成一个。我尝试了以下方法: 有没有可行的方法?请注意,直到运行时我才知道列表的大小,并且列表可能会锯齿。 问题答案: 没有简单的内置方法可以执行所需的操作,因为您只能返回存储在list中的元素数组,在您的情况下也可以是list。 最简单的解决方案是创建二维数组,并用每个嵌套列表的结果填充它。 (如果您像使用Alex一样将Java8与流一起

  • 问题内容: 我具有以下列数据的关联数组: 我需要将结构转置/旋转为行数组(将合并的列数据分配给它们各自的行)。我不需要结果中的列名。 预期产量: 问题答案: 正如Kris Roofe在删除的答案中所说,的确是一种更为优雅的方法。只要确保将其放入某种循环中即可,就像Sahil Gulati向您展示的那样。例如,像这样: 的输出正是您要寻找的

  • "Come to me, all you that are weary and are carrying heavy burdens,and I will give you rest. Take my yoke upon you, and learn from me; for I am gentle and humble in heart, and you will find rest for y