Set
HashSet : 不能保证元素的排列顺序 ------ 元素遍历的顺序和保存的顺序不一样 —并不是遍历每次随机
LinkedHashSet : LinkedHashSet作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历,对于频繁的遍历操作,LinkedHashSet效率高于HashSet
TreeSet : TreeSet底层基于红黑树,TreeSet可以按照添加对象的指定属性,进行排序。
HashSet
import java.util.HashSet;
import java.util.Iterator;
/**
* Set-----接口 --- 没有下标,元素不可重复
*/
public class MyTest1 {
public static void main(String[] args) {
/**
* HashSet基本使用
* 1.创建HashSet对象
* 2.使用
* 3.不能保证元素的排列顺序 ------ 元素遍历的顺序和保存的顺序不一样 ---并不是遍历每次随机
*/
//创建HashSet对象
HashSet<String> set = new HashSet<>();
//添加元素
set.add("JavaSE基础");
set.add("JavaSE高级");
set.add("JMySQL");
set.add("11111111111111");
set.add("JDBC");
set.add("前端");
set.add("%%%%%%%%%%%%");
set.add("JavaWeb");
//打印
System.out.println(set);
/**
* 遍历
* 1.增强for循环
* 2、迭代器
*/
for (String item:set) {
System.out.println(item);
}
System.out.println("-------------------------------------------");
//Iterator<String> it =set.iterator();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
}
System.out.println("--------------------------------------------");
//java8新特性
set.forEach(item -> System.out.println(item));
System.out.println("---------------------------------------------");
set.stream().forEach(item-> System.out.println(item));
LinkedHashSet
package com.sdut.k5;
import java.util.Iterator;
import java.util.LinkedHashSet;
public class MyTest3 {
public static void main(String[] args) {
//LinkedHashSet
//LinkedHashSet作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历,对于频繁的遍历操作,LinkedHashSet效率高于HashSet
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("111111111111111111111");
set.add("JavaSE");
set.add("JDBC");
set.add("MySQL");
set.add("******");
set.add("前端");
set.add("JavaWeb");
for (String item : set) {
System.out.println(item);
}
System.out.println("--------------------------");
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
TreeSet
package com.sdut.k5;
import java.util.Comparator;
import java.util.TreeSet;
public class MyTest4 {
public static void main(String[] args) {
/**
* TreeSet底层基于红黑树
* 比较
* |----自然排序
* |----定制排序
* TreeSet可以按照添加对象的指定属性,进行排序。
*/
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("111");
treeSet.add("222");
treeSet.add("zzzzz");
treeSet.add("aaaa");
treeSet.add("NNNN");
treeSet.add("NNNN");
for (String item : treeSet) {
System.out.println(item);
}
System.out.println("------------------------------");
//TreSet<Person. treeSet2 = new TreeSet<>(); //yaioqiuTreeSet中的元素实现自然排序
TreeSet<Person> treeSet2 = new TreeSet<>(new Comparator<Person>() {//定制排序
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
});
treeSet2.add(new Person("001","zs",20));
treeSet2.add(new Person("002","ls",10));
treeSet2.add(new Person("003","ww",40));
treeSet2.add(new Person("003","ww",40));
for (Person person : treeSet2) {
System.out.println(person);
}
}
}