数学意义上的集合
为什么要设计HashSet?
HashSet 本质实现原理
- 背后实现为 HashMap
- HashSet 中的元素相当于 HashMap 中的Key,而Value均为 new Object()
HashSet 实战
// 如何构造HashSet
Set<String> stringSet = new HashSet<>()
// 带入集合参数
Collection<Integer> c = new ArrayList<>()
c.add(100)
c.add(100)
c.add(1)
c.add(1)
Set<Integer> integerSet = new HashSet<>(c)
for (Integer num: integerSet) {
System.out.println("Num in set: " + num)
}
System.out.println("Size of integer set: " + integerSet.size());
System.out.println("IsEmpty for set: " + stringSet.isEmpty());
if (integerSet.contains(100)) {
System.out.println("100 belong to this set");
} else {
System.out.println("100 not belong to this set");
}
stringSet.add("Java");
stringSet.add("String");
stringSet.add("XXXXX");
System.out.println("Size: " + stringSet.size());
System.out.println("Remove result for XXXX: " + stringSet.remove("XXXX"));
System.out.println("Size after removing XXXX: " + stringSet.size());
System.out.println("Remove result for XXXXX: " + stringSet.remove("XXXXX"));
System.out.println("Size after removing XXXXX: " + stringSet.size());
List<String> list = new ArrayList<>();
list.add("123X");
list.add("Java");
list.add("String");
stringSet.addAll(list);
System.out.println("Size after addAll: " + stringSet.size());
System.out.println("RetainAll: " + stringSet.retainAll(list));
System.out.println("RemoveAll: " + stringSet.removeAll(list));
// 1. 迭代器(不推荐)
Iterator<String> iterator = stringSet.iterator();
while (iterator.hasNext()) {
System.out.println("Iterator element: " + iterator.next());
}
// 2. for-each
for (String element: stringSet) {
System.out.println("Foreach element: " + element);
}
// 3. lambda(推荐)
stringSet.forEach(System.out::println);
stringSet.forEach(element -> System.out.println("Foreach element: " + element));