一、HashSet的底层由HashMap实现。html
二、transient关键字:做用是控制变量的序列化,在变量声明前加上该关键字,能够阻止该变量被序列化到文件中,在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。java
三、序列化:将 Java 对象序列化为二进制文件。https://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html数组
四、spliterator方法:JDK 1.8 中添加,建立集合的分片迭代器。htm
public static void main(String[] args) throws Exception { Employee emp = new Employee(); emp.name = "Tom"; Employee emp2 = new Employee(); emp2.name = "Jerry"; Collection<Employee> set = new HashSet<>(); set.add(emp); set.add(emp2); Spliterator<Employee> spl = set.spliterator(); while (spl.tryAdvance(new Consumer<Employee>() { public void accept(Employee employee) { employee.name += "_09"; } })); for (Employee employee : set) { System.out.println(employee.name); } Spliterator<Employee> spl2 = set.spliterator(); while (spl2.tryAdvance(e -> e.name += "_10")); for (Employee employee : set) { System.out.println(employee.name); } }
五、Cloneable接口:一个标记性接口,是浅拷贝,意味着若是你的类中有数组,Collection,对象,那么仅仅拷贝的是这些变量的引用,并无将数组,集合中的成员对象复制成新的。对象
public class Employee implements Cloneable { public int age; public String name; public Employee clone() { Employee ee = null; try { ee = (Employee) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return ee; } }
public static void main(String[] args) { Employee ee = new Employee(); ee.age = 21; ee.name = "clone"; Employee ee1 = ee.clone(); ee1.name = "clone1"; System.out.println(ee.name); System.out.println(ee.age); System.out.println(ee1.name); System.out.println(ee1.age); }