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

返回ArrayList将删除空子列表

苏涛
2023-03-14

我不确定如何返回arraylist(删除null子列表),以及删除非null子列表中的null项。如果list为Null,则返回空arraylist。这就是我到目前为止所做的。

public static ArrayList<ArrayList<Integer>> getClean(ArrayList<ArrayList<Integer>> list) {
    if (list == null) {
        return null;
    }
    ArrayList<ArrayList<Integer>> newList = new ArrayList<>();

    for (int i = 0; i < list.size(); i++) {
        ArrayList<Integer> alist = new ArrayList<>();
        if (list.get(i) != null) {
            for (int k = 0; k < list.get(i).size(); k++) {
                if (list.get(i).get(k) != null) {
                    alist.add(list.get(i).get(k));
                }
            }
            newList.add(alist);
        }
    }
    return newList;
}
@Test @Graded(description="GetClean")
public void testGetClean() {
    ArrayList<ArrayList<Integer>> result = ListOfListService.getClean(null);
    assertFalse(result == null);
    assertTrue(result.isEmpty());

    String copy = listSameSize.toString();
    result = ListOfListService.getClean(listSameSize);
    assertEquals(copy, listSameSize.toString()); // have you modified the original list?
    assertFalse(result == listSameSize); // Ensures result is an instance copy
    assertEquals(result, listSameSize);

    copy = list3_emptySubLists.toString();
    result = ListOfListService.getClean(list3_emptySubLists);
    assertEquals(copy, list3_emptySubLists.toString());
    assertFalse(result == list3_emptySubLists);
    assertEquals(result, list3_emptySubLists);

    copy = list4_nullItems.toString();
    result = ListOfListService.getClean(list4_nullItems);
    assertEquals(copy, list4_nullItems.toString());
    assertEquals("[[-1, -2, -1, 4, 5, 6, 7, 8, 9], [100, 200, 700, 900], [10, 20, 90], [20, 22]]", result.toString());
    currentMethodName = new Throwable().getStackTrace()[0].getMethodName();
}

共有1个答案

阚原
2023-03-14

你可以试试这个。它将支持任何类型T但返回ArraysLists

  • 首先检查空列表,如果存在则返回空列表。
  • 否则,它将遍历列表并删除空列表和良好列表中的空值。
public static <T> List<List<T>> getClean(List<List<T>> lists) {
    if (lists == null) {
        return new ArrayList<List<T>>();
    }
    
    List<List<T>> cleaned = lists.stream()
            .filter(Objects::nonNull)
            .map(lst -> lst.stream().filter(Objects::nonNull)
                    .collect(Collectors.toList()))
            .collect(Collectors.toList());
    return cleaned;
}

如果您的原始列表包含以下六个列表。

null
null
[1, 2, 3, null, null, 4, 5]
[6, 7, 8, null]
null
null

这是将返回的内容

[1, 2, 3, 4, 5]
[6, 7, 8]

 类似资料:
  • 注:[2017年1月11日]RestInfoAdapter.java的源代码已经更改和更新(参见下面的第2项) 我一直在尝试通过保留原始输入列表的备份/副本来使我的搜索视图返回到原始列表。但是,它根本不起作用。我的这个问题包括使用自定义类的RecyclerView和ArrayList。 是一个名为<code>RestInfo 我是如何尝试的 适配器类,以便RestInfo可以呈现在卡片视图中(因此

  • 问题内容: 该方法返回的表示形式。这里返回的对象是数组支持的,但不是对象。 我正在寻找对象返回值与对象之间的差异- 一种快速的来源,可以告诉它们而无需深入研究代码。 TIA。 问题答案: 当您调用Arrays.asList时,它不会返回。它返回一个由原始源数组支持的固定大小列表。换句话说,它是使用Java的基于集合的API公开的数组的视图。 您不能向其中添加元素,也不能从中删除元素。如果您尝试从中

  • 有人能告诉我为什么列表返回空吗?我的xpath是准确的,因为我重新检查了它,但我仍然无法迭代它,而调试for循环甚至没有执行。我不确定我哪里出了问题。

  • 问题内容: 我正在尝试编写一个用于与last.fm API进行交互的小脚本。 我有一点使用的经验,但是以前使用它的方式似乎无效,而是返回一个空列表。 我删除了API密钥,因为我不知道它到底应该有多私密,并举了一个示例,说明了我在该位置接收的XML。 与API交互的类: 调用的get_now_playing方法: 我收到的xml样本: 问题答案: 问题在于, 如果给定标签名称,则仅搜索元素的直接后代

  • 我试图用刮擦和飞溅来刮取衣服的图像和一些产品信息。我想得到的形象,只有产品(所以没有模型)。比如这张照片https://www2.hm.com/nl_nl/productpage.0220094001.html 然而,如果我试图让src在Scrapy shell中 回答xpath('//figure[包含(@class,“secondary”)]///img//@src')。摘录() 返回一个空列

  • 引用 删除空文件夹.nsi 的内容: SetCompressor /SOLID lzma SetCompress force !include "FileFunc.nsh" !insertmacro Locate XPStyle on OutFile "删除空文件夹.exe" Name "" Var INI Page Custom ShowCustom LeaveCustom Function