温馨提示:距离2024年结束还剩18天,剩余约为4.92%...
public class TestArrayList {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
if (i == 1) {
System.out.println("断点位置 没添加元素时候容量 0");
}
list.add(i);
if (i == 1) {
System.out.println("断点位置 第一次添加元素 容量 10");
}
if (i == 11) {
System.out.println("断点位置 第1次扩容 容量 15");
}
if (i == 16) {
System.out.println("断点位置 第2次扩容 容量15*1.5= 22.5,22 or 23 ");
}
}
}
}
public class TestArrayList1 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(4);
for (int i = 1; i <= 20; i++) {
if (i == 1) {
System.out.println("断点位置 没添加元素时候容量 4");
}
list.add(i);
if (i == 5) {
System.out.println("断点位置 第一次扩容 容量 6 ");
}
if (i == 7) {
System.out.println("断点位置 第二次扩容 容量9");
}
}
}
}
hashCode 通常在可以起到快速初次判断对象是否相等的作用,可以提高性能。
hashcode不同, 对象一定不同, 不用再使用equals()比较了;hashcode相同, 对象可能不同, 这个时候再使用equals()进一步比较。
package com.lcuyp.redis.bean;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Objects;
/**
* @Description:
* @author: yp
*/
public class Student implements Serializable {
private String name;
private String grade;
private int age;
public Student() {
}
public Student(String name, String grade, int age) {
this.name = name;
this.grade = grade;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name) &&
Objects.equals(grade, student.grade);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", grade='" + grade + '\'' +
", age=" + age +
'}';
}
@Override
public int hashCode() {
return Objects.hash(name, grade, age);
}
public static void main(String[] args) {
Student s1 = new Student("zs", "三年级", 18);
Student s2 = new Student("zs", "三年级", 18);
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2));//true
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
//如果只重写了equals(),set集合里面会有2个学生, 认为s1和s2不是同一个学生,因为s1和s2的hashcode不一样
//如果重写了equals()和hashcode(), set集合里面只有1个学生,因为s1和s2的hashcode是一样的, 认为是同一个学生
HashSet<Student> set = new HashSet<>();
set.add(s1);
set.add(s2);
System.out.println(set.size());
}
}