Set
特点:无序,无下标,元素不可重复。
方法:全部继承Collection中的方法
package com.zhang.oop.Coll;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Demo05 {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
//添加信息
set.add("小米");
set.add("苹果");
set.add("华为");
//删除信息
set.remove("苹果");
System.out.println(set);
//增强for循环遍历
for (String s : set) {
System.out.println(s);
}
//迭代器遍历
Iterator<String> it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
HashSet
添加字符串用法和上面一样。
package com.zhang.oop.Coll;
import java.util.HashSet;
public class Demo06 {
public static void main(String[] args) {
HashSet<Students> stu = new HashSet<>();
Students s1 = new Students("张三",22);
Students s2 = new Students("李四",33);
Students s3 = new Students("王五",43);
stu.add(s1);
stu.add(s2);
stu.add(s3);
stu.add(new Students("张三",22)); //添加重复信息的时候会添加上,所以要重写equals方法和HashCode方法。重写: Alt+Insert
System.out.println(stu);
}
}
存储结构:哈希表(数组+链表+红黑树)
存储过程(重复依据):根据HashCode计算保存位置,如果此位置为空,则直接保存,否则执行equals方法,如果equals方法为true,则认为是重复,否则形成链表。
TreeSet
存储结构:红黑树
- 基于排列顺序实现元素不重复
- 实现了SortSet接口,对集合元素自动排序
- 元素对象的类型必须实现Comparable接口,指定排序规则
- 通过Comparable方法确定是否为重复元素
//方法使用和上面一样,但是要写CompareTo方法
public class Students implements Comparable<Students>{
@Override
public int compareTo(Students s) {
int n1 = this.getName().compareTo(s.getName());
int n2 = this.age-s.getAge();
return n1==0?n2:n1;
}
}
comparator接口:实现定制比较(比较器)
package com.zhang.oop.Coll;
import java.util.Comparator;
import java.util.TreeSet;
public class Demo07 {
public static void main(String[] args) {
TreeSet<Students> stu = new TreeSet<>(new Comparator<Students>() { //重点
@Override
public int compare(Students o1, Students o2) {
int n1 = o1.getAge()-o2.getAge();
int n2 = o1.getName().compareTo(o2.getName());
return n1==0?n2:n1;
}
});
Students s1 = new Students("张三", 22);
Students s2 = new Students("李四", 33);
Students s3 = new Students("王五", 43);
stu.add(s1);
stu.add(s2);
stu.add(s3);
stu.add(new Students("张三", 22));
System.out.println(stu);
}
}
TreeSet案例
package com.zhang.oop.Coll;
import java.util.Comparator;
import java.util.TreeSet;
public class Demo08 {
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int n1 = o1.length()-o2.length();
int n2 = o1.compareTo(o2);
return n1==0?n2:n1;
}
});
treeSet.add("shanxi");
treeSet.add("xian");
treeSet.add("cat");
treeSet.add("dog");
System.out.println(treeSet);
}
}
标签:int,Set,Students,stu,add,new,public
From: https://www.cnblogs.com/rockz/p/17217532.html