集合框架二(Set接口)
来源:互联网 发布:mac win10 printscreen 编辑:程序博客网 时间:2024/05/21 19:29
package us.google.com;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
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;
}
@Override
public String toString() {
return “Person [name=” + name + “, age=” + age + “]”;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
package us.google.com;
public class Student {
private String name;
public Student(String name) { super(); this.name = name;}private int age;public Student() { super(); // TODO Auto-generated constructor stub}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;}@Overridepublic String toString() { return "Student [name=" + name + ", age=" + age + "]";}
}
package us.google.com;
public class Empl implements Comparable{
private String name;
private int age;
public Empl(String name, int age) { super(); this.name = name; this.age = age;}public Empl() { super(); // TODO Auto-generated constructor stub}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;}@Overridepublic String toString() { return "Empl [name=" + name + ", age=" + age + "]";}@Overridepublic int compareTo(Empl o) { if(o==null) { throw new NullPointerException("参数不能为空"); } if (this.age>o.age) { return 1; } if(this.age<o.age) { return -1; } return 0;}
}
package us.google.com;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
/**
* Set接口
* 1、不允许重复元素
* @author chongrubujing
*
*/
public class SetDemo {
/**
* HashSet实现类
* 1、不保证迭代顺序
* 2、底层使用HashMap实现(哈希表)
* 3、自定义对象是否重复的判断条件是:先判断hashCode是否相等,如果hashCode不相等,那么一定不是同一个对象
* 如果hashCode相等,那么久需要equals方法进一步判断,如果equals返回true则为同一个对象。否则不是
* 同一个对象。
*/
public static void hashset()
{
//创建一个HashSet对象
Set set = new HashSet();
set.add(“空空”);
set.add(“兰兰”);
set.add(“爱爱”);
set.add(“苍苍”);
System.out.println(“元素的个数是:”+set.size());
//把集合转换成数组(匿名对象注意别忘了{})
String[] names = set.toArray(new String[]{});
for (String s: names) {
System.out.println(s);
}
System.out.println(“—————————”);
//存储自定义对象
//创建HashSet对象
Set persons = new HashSet();
persons.add(new Person(“空空”,18));
persons.add(new Person(“兰兰”,18));
persons.add(new Person(“爱爱”,18));
persons.add(new Person(“苍苍”,18));
persons.add(new Person(“空空”,30));
System.out.println(“元素一共有:”+persons.size());
}
/** * TreeSet实现类 * 1、使用元素的自然顺序对元素进行排序 * 2、底层使用TreeMap实现(树形结构) * 3、在TreeSet集合中,存储自定义对象时,该对象必须实现Comparable/Comparator接口 */public static void treeset(){ Set<String> set = new TreeSet<String>(); set.add("空空"); set.add("兰兰"); set.add("苍苍"); set.add("爱爱"); System.out.println("元素个数:"+set.size()); String[] names = set.toArray(new String[]{}); for (String s : names) { System.out.println(s); } System.out.println("添加自定义对象"); Set<Empl> set1 = new TreeSet<Empl>(); set1.add(new Empl("空空",30)); set1.add(new Empl("兰兰",31)); set1.add(new Empl("苍苍",32)); set1.add(new Empl("爱爱",33)); set1.add(new Empl("利亚",28)); System.out.println("个数为:"+set1.size());}/** * LinkedHashSet类 * 1、使用哈希表+双向链表实现 * 2、会以插入的顺序输出 * 3、底层是使用LinkedHashMap实现 * 4、是HashSet的子类 */public static void linkedhashset(){ Set<Student> set2 = new LinkedHashSet<Student>(); Student s1 = new Student("小白"); Student s2 = new Student("小黑"); Student s3 = new Student("小红"); Student s4 = new Student("小蓝"); set2.add(s1); set2.add(s2); set2.add(s3); set2.add(s4); set2.add(new Student("小绿")); System.out.println(set2);}public static void main(String[] args) { hashset(); treeset(); linkedhashset();}
}
- 集合框架二(Set接口)
- java集合框架详解(二)、set接口
- 集合框架-Set接口
- 黑马程序员--集合框架(二)Set
- 黑马程序员——JAVA基础------集合框架(二)----Set接口
- 集合框架之Set接口
- 集合框架(Set)
- java日常学习:集合(二)list和set接口
- 国际化,枚举,集合框架,set接口
- 集合框架Set接口之hashset
- java集合框架系列---Set接口
- Java复习之集合框架Set接口
- JAVA集合框架之List Set接口
- Java集合框架(二)之Set详解
- 09.集合框架(二)【Set】【HashSet】【TreeSet】
- Set接口(Set接口简介、HashSet集合、TreeSet集合 )
- Java-集合框架Collection之Set(二)
- java 集合框架(3)Set接口和SortedSet接口
- easyui加载datagrid和treegrid的几种json数据格式
- c++指针详解
- STM32中的位带(bit-band)操作
- 三消游戏解析(一)
- 文件FTP上传支持断点续传demo
- 集合框架二(Set接口)
- java实现FTP多线程断点续传,上传下载!
- 项目日常
- WPF中的简单打印
- Java常用设计模式
- Java反射机制Class类的用法详解
- HTML 字符实体 < >: &等
- apache thrift
- Android ImageCache ??