Java 如何确定集合是否为空

Java 如何确定集合是否为空,java,exception,collections,Java,Exception,Collections,我有一个三维数组列表,我想确定它是否为空。有一个名为EmptyCollectionException的异常,它不是java标准库的一部分,因此不允许我使用它 有没有办法使用本机java异常或函数来实现这一点 3D列表的结构如下所示: public void makeRandomCardListForLearning (Course courseToBeMadeRandom) { List<List<List<Card>>> course = new

我有一个三维数组列表,我想确定它是否为空。有一个名为EmptyCollectionException的异常,它不是java标准库的一部分,因此不允许我使用它

有没有办法使用本机java异常或函数来实现这一点

3D列表的结构如下所示:

public void makeRandomCardListForLearning (Course courseToBeMadeRandom) {

    List<List<List<Card>>> course = new ArrayList<List<List<Card>>>(); 

    for(Chapter chptr: courseToBeMadeRandom.getChapterList()) {
        List<List<Card>> chapter = new ArrayList<List<Card>>();
        course.add(chapter);

        for(Deck dck: chptr.getDeckList()) {
            List<Card> deck = new LinkedList<Card>();
            chapter.add(deck);

            for(Card crd: dck.getCardList()) {
                if(dck.isTheCardDueToday(crd.getLastDate())) {
                    deck.add(crd);
                }
            }
            Collections.shuffle(deck);
        }
    }
}
public void为学习制作随机卡片列表(要制作的课程){
列表过程=新建ArrayList();
对于(章节chptr:courseToBeMadeRandom.getChapterList()){
列表章节=新建ArrayList();
添加(第章);
对于(Deck dck:chptr.getDeckList()){
列表组=新的LinkedList();
第章.添加(甲板);
对于(卡crd:dck.getCardList()){
if(dck.isTheCardDueToday(crd.getLastDate())){
甲板。添加(crd);
}
}
收藏。洗牌(牌组);
}
}
}
在我完成课程、章节和甲板的过程中,我为每个章节和甲板创建了一个列表。只有一门课,许多章节,许多牌组,当然还有许多卡片,如果通过了前提条件,它们会保存在牌组双链接列表下。如果没有卡通过条件,我有一个3D列表存在,但没有卡。我想确定如果列表中没有卡,那么用户会收到一条错误消息


事实上,我只需要这些卡片。但我还需要知道目前每张牌都在哪一副牌组中。如果我只是做一个列表,浏览所有的章节和套牌,然后根据条件把牌放在列表中,那么我就不知道每张牌在哪个章节和套牌中。这可以通过向card类添加两个属性来解决。但这是一个错误,因为我们设计了这个系统,现在添加它们需要在程序的其他部分进行大量更改。课程列表中的每个索引表示章节号,章节列表中的每个索引表示甲板号。我就这样解决了这个问题

你可以这样做

         List<List<List<Card>>> course = new ArrayList<List<List<Card>>>(); 
                  // some possible codes
         boolean check = course.isEmpty()
                    // other possible codes
                if (check) {
           // do something
                            }
List-course=new-ArrayList();
//一些可能的代码
布尔检查=course.isEmpty()
//其他可能的代码
如果(检查){
//做点什么
}

或者您想要检查的任何阵列列表,或者您想要达到目标的任何方式,您都可以这样做

         List<List<List<Card>>> course = new ArrayList<List<List<Card>>>(); 
                  // some possible codes
         boolean check = course.isEmpty()
                    // other possible codes
                if (check) {
           // do something
                            }
List-course=new-ArrayList();
//一些可能的代码
布尔检查=course.isEmpty()
//其他可能的代码
如果(检查){
//做点什么
}
或者您想要检查的任何阵列列表,或者您想要达到目标的任何方式,都应该这样做:

public static boolean isEmpty(List<List<List<Card>>> list3d) {
    return list3d.stream().flatMap(llc -> llc.stream()).flatMap(lc -> lc.stream()).count() == 0;
}
公共静态布尔值为空(列表list3d){
返回list3d.stream().flatMap(llc->llc.stream()).flatMap(lc->lc.stream()).count()==0;
}
它考虑到外部列表可能包含空的内部列表。如果3D列表中没有卡片,它会认为整个3D列表为空。

这应该可以做到:

public static boolean isEmpty(List<List<List<Card>>> list3d) {
    return list3d.stream().flatMap(llc -> llc.stream()).flatMap(lc -> lc.stream()).count() == 0;
}
公共静态布尔值为空(列表list3d){
返回list3d.stream().flatMap(llc->llc.stream()).flatMap(lc->lc.stream()).count()==0;
}

它考虑到外部列表可能包含空的内部列表。如果没有卡片,它会认为整个3D列表是空的。

你能显示你的部分代码吗?arrayList.isEmpty()不够吗?如何使用
isEmpty()
方法?你为什么决定使用3个嵌套列表?@NikolasCharalambidis我对你问题的回答超过了允许的限制;)所以我更新了问题。请阅读最后一段你能展示你的部分代码吗?
arrayList.isEmpty()
不够吗?
isEmpty()
方法怎么样?你为什么决定使用3个嵌套列表?@nikolasharalalambidis我对你问题的回答超过了允许的限制;)所以我更新了问题。请读最后一段,我想在结尾而不是开头检查一下。事实上,我想知道一张卡片是否存在于其中一张列表中,或者这个列表只是由章节、牌组和任何牌组下的卡片组成的。因为最终我需要处理卡片。我将它放在if中,以显示它是一个布尔值。这只是它如何工作的一个示例。您可以编写代码并根据需要使用它。让我编辑它。我希望在结尾检查它,而不是在开头检查它。事实上,我想知道一张卡片是否存在于其中一张列表中,或者这个列表只是由章节、牌组和任何牌组下的卡片组成的。因为最终我需要处理卡片。我把它放在if中,以显示它是一个布尔值。这只是它如何工作的一个示例。你可以编写代码并使用它。让我编辑它,简洁、精确,切中要害。正是我想要的!谢谢:)简洁,精确,切中要害。正是我想要的!谢谢:)