2016-11-27 13 views
0

3 차원 ArrayList가 있는데 비어 있는지 확인하고 싶습니다. EmptyCollectionException이 Java 표준 라이브러리의 일부가 아니므로 사용할 수 없습니다.컬렉션이 비어 있는지 확인하는 방법

기본 Java 예외 또는 함수를 사용하여이를 수행 할 수있는 방법이 있습니까?

차원 목록은 다음과 같이 구성된다 : 나는 물론, 장 및 갑판을 통과으로

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); 
     } 
    } 
} 

나는 각 하나에 대한 목록을 작성합니다. 하나의 코스, 많은 챕터, 많은 덱 그리고 물론 사전 조건을 통과한다면 갑판 doublyLinkedList 아래에 저장되는 많은 카드가 있습니다. 카드가 조건을 통과하지 못하면 존재하지만 카드가없는 3D 목록이 있습니다. 목록에 카드가 없으면 사용자에게 오류 메시지가 표시됩니다.

사실 나는 카드 만 필요합니다. 그러나 각 카드가 현재 어느 데크에 있는지도 알아야합니다. 방금 목록을 작성하고 모든 챕터와 덱을 통과하고 조건에 따라 목록에 카드를 넣으면 각 카드가있는 챕터와 덱에 대한 단서가 없습니다. 아마도 카드 클래스에 두 가지 속성을 추가하여 해결할 수 있습니다. 그러나 그것은 우리가 시스템을 설계 할 때 실수 였고 지금 추가하는 것은 프로그램의 다른 부분에서 많은 변화를 초래합니다. 물론 List의 각 색인은 장 번호를 나타내고 장 색인의 각 색인은 데크 번호를 나타냅니다. 나는 그 방법으로 문제를 해결했다.

+0

코드 일부를 표시 할 수 있습니까? –

+0

은'arrayList.isEmpty()'충분하지 않습니다? – SMA

+0

'isEmpty()'메서드는 어떻습니까? –

답변

1

이 그것을 수행해야합니다

public static boolean isEmpty(List<List<List<Card>>> list3d) { 
    return list3d.stream().flatMap(llc -> llc.stream()).flatMap(lc -> lc.stream()).count() == 0; 
} 

에게 그것을 외부 목록에 빈 내부 목록이 포함될 수 있음을 고려합니다. 카드가 없으면 전체 3D 목록이 비어 있다고 간주합니다.

+0

요점까지 컴팩트하고 정밀합니다. 정확히 내가 원했던 것! 감사 :) – Infinity

1

당신은 당신이 확인하고 싶은이

  List<List<List<Card>>> course = new ArrayList<List<List<Card>>>(); 
        // some possible codes 
     boolean check = course.isEmpty() 
        // other possible codes 
       if (check) { 
      // do something 
          } 

또는 ArrayList를 또는 당신이 당신의 목표에 도달하기 원하는 방식처럼 뭔가를 할 수

+0

처음에 끝에서 확인하고 싶습니다. 사실 카드가 목록 중 하나에 있는지 또는 원하는 카드가 장, 챕터, 덱 및 카드로만 만들어 졌는지 알고 싶습니다. 결국 카드로 작업해야하기 때문입니다. – Infinity

+0

나는 그것의 부울 값을 보여주는 if에 그것을 두었습니다. 어떻게 작동하는지에 대한 예제 만 있습니다. 코드를 작성하고 원하는대로 사용할 수 있습니다. 내가 편집하십시오. –

+0

@Infinity 내 게시물을 편집했습니다. –

관련 문제