第 25 课
- [1452. 收藏清单](https://leetcode-cn.com/problems/people-whose-list-of-favorite-companies-is-not-a-subset-of-another-list/)
 - [2248. 多个数组求交集](https://leetcode-cn.com/problems/intersection-of-multiple-arrays/)
 - 基础知识
 - Java 遍历 Set 集合的方法
 
- 1、迭代器 iterator
 - 2、增强 for
 - 3、set.forEach
 - 4、set.stream().forEach
 
- JAVA Set 交集,差集,并集
 - Java ArrayList retainAll() 方法
 
 
1452. 收藏清单
class Solution:
    def peopleIndexes(self, favoriteCompanies: List[List[str]]) -> List[int]:
        ans, n = [], len(favoriteCompanies)
        # f = [set(x) for x in favoriteCompanies]
        f = list(map(set, favoriteCompanies))
        for i, x in enumerate(f):
            for j, y in enumerate(f):
                if i == j: continue 
                if x.issubset(y): break
            else:
                ans.append(i)
        return ansclass Solution {
    public List<Integer> peopleIndexes(List<List<String>> f) {
        List<Integer> res = new ArrayList<>();
        List<HashSet<String>> s = new ArrayList<>();
        for (List list : f) s.add(new HashSet(list));  // 增强 for
        // f.forEach(x ->{s.add(new HashSet(x));}); // List.forEach 
        int i = -1;
        sign:       
        for (Set a : s){ // for (List a : f){
            i++;           
            for (HashSet<String> b : s) {    // for (List b : f){ 
                if (a.size() >= b.size()) continue;
                if (b.containsAll(a)) continue sign;
            }
            res.add(i);
        }
        return res;
    }
}2248. 多个数组求交集
class Solution:
    def intersection(self, nums: List[List[int]]) -> List[int]:
        s = set(nums[0])
        for x in nums:
            s &= set(x)
        return sorted(s)class Solution {
    public List<Integer> intersection(int[][] nums) {
        Set ans = new HashSet();
        for (int x : nums[0]) ans.add(x);        
        for (int i = 1; i < nums.length; i++){               
            Set tmp = new HashSet();
            for (int x : nums[i]) tmp.add(x);          
            ans.retainAll(tmp);            
        }
        List res = new ArrayList(ans);
        Collections.sort(res);
        return res;
		
        // List ans = new ArrayList();
        // for (int x : nums[0]) ans.add(x);        
        // for (int i = 1; i < nums.length; i++){   
        //     List tmp = new ArrayList();
        //     for (int x : nums[i]) tmp.add(x);          
        //     ans.retainAll(tmp);            
        // }
        // Collections.sort(ans);
        // return ans;
    }
}基础知识
Java 遍历 Set 集合的方法
Set 和 List 遍历方式基本一致,Set 没有 for i 的遍历方式
1、迭代器 iterator
Set<Integer> set = new HashSet<>();
for (Iterator<Integer> it = set.iterator(); it.hasNext();) {
    it.next();
}
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
    it.next();
}2、增强 for
Set<Integer> set = new HashSet<>();
for (int item : set) {
    // System.out.println(item);
}3、set.forEach
Set<Integer> set = new HashSet<>();
set.forEach(item -> {
    // System.out.println(item);
});4、set.stream().forEach
Set<Integer> set = new HashSet<>();   
set.stream().forEach(item -> {
    // System.out.println(item);
});JAVA Set 交集,差集,并集
import java.util.HashSet;
import java.util.Set;
Set<String> res = new HashSet<String>();
Set<String> a = new HashSet<String>() {
	{
	    add("python");
	    add("java");
	    add("c++");
	    add("javascript");
	}  
};
Set<String> b = new HashSet<String>() {
    {
        add("python");
        add("java");
        add("C#");
    }
};
res.clear();
res.addAll(a);
res.retainAll(b);
System.out.println("交集:" + res);
res.clear();
res.addAll(a);
res.removeAll(b);
System.out.println("差集:" + res);
res.clear();
res.addAll(a);
res.addAll(b);
System.out.println("并集:" + res);Java ArrayList retainAll() 方法
retainAll() 方法用于保留 arraylist 中在指定集合中也存在的那些元素,也就是删除指定集合中不存在的那些元素。
arraylist.retainAll(Collection c);注:arraylist 是 ArrayList 类的一个对象。
 参数说明:collection - 集合参数
 返回值:如果 arraylist 中删除了元素则返回 true。
如果 arraylist 类中存在的元素与指定 collection 的类中元素不兼容,则抛出 ClassCastException 异常。
 如果 arraylist 包含 null 元素,并且指定 collection 不允许 null 元素,则抛出 NullPointerException 。
                










