标签:person color 表数 xtend ext system cti nts 传递
什么是哈希值?
如果我们往集合中存放自定义的对象,那么保证其唯一, 就必须复写hashCode和equals方法建立属于当前对象的比较方式。
详解Set存储元素原理:
当我们使用Set集合中的add方法往集合中添加元素的时候:
代码举例
要求: 同名同年龄的人,视为同一个人,只能存储一次
定义Person类
package demo02HashSet; import java.util.Objects; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } //重写equals方法 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } //重写hashCode @Override public int hashCode() { return Objects.hash(name, age); } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
定义hashSet集合存储Person类
package demo02HashSet; import java.util.HashSet; public class Demo01HashSetPersonTest { public static void main(String[] args) { //创建HashSet集合存储Person HashSet<Person> set = new HashSet<>(); Person p1 = new Person("小美女", 18); Person p2 = new Person("小美女", 18); Person p3 = new Person("小美女", 19); //查看哈希值 System.out.println(p1.hashCode());//734175839 System.out.println(p2.hashCode());//734175839 System.out.println(p1.equals(p2));//true set.add(p1); set.add(p2); set.add(p3); //查看集合里的元素 System.out.println(set);//[Person{name=‘小美女‘, age=19}, Person{name=‘小美女‘, age=18}] } }
可变参数:JDK1.5之后出现的新特性。如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以使用可变参数。
使用前提:
使用格式:
修饰符 返回值类型 方法名(参数类型... 形参名){
方法体
}
其实这个书写完全等价于
修饰符 返回值类型 方法名(参数类型[] 形参名){
方法体
}
可变参数的原理:
可变参数的注意事项
package demo02HashSet; public class ChangeArgs { public static void main(String[] args) { int[] arr = {1, 4, 62, 431, 2}; int sum = getSum(arr); System.out.println(sum);//500 // 求 这几个元素和 6 7 2 12 2121 int sum2 = getSum(6, 7, 2, 12, 2121); System.out.println(sum2);//2148 } /* * 完成数组 所有元素的求和 原始写法 public static int getSum(int[] arr){ int sum = 0; for(int a : arr){ sum += a; } return sum; } */ //可变参数写法 public static int getSum(int... arr) { int sum = 0; for (int a : arr) { sum += a; } return sum; } //可变参数的特殊(终极)写法 public static void method(Object... obj) { } }
标签:person color 表数 xtend ext system cti nts 传递
原文地址:https://www.cnblogs.com/wurengen/p/12024685.html