My response is based solely on your question verbiage.
I would not say one list is more efficient than the other, but rather both lists are equally efficient and important based on which list references the information needed. In other words, I look at the "CardLib" as a Card Catalogue, with the "List.Contains" as defining the Types of Cards/Subsections in the Card Catalogue, i.e. Birthday, Graduation, Holiday etc. Finally the "InnerList.Contains", the Arraylist, contains all the cards within the subsection within the card catalogue. The InnerList defines the granular level. You will be able to access the entire Card Catalogue or the catalogue by sections or a single card.
Hope this helps.
Disclaimer: The above comments are solely the opinion of one person and not to be construed as a directive or an incentive to commit fraudulent acts.