目录
一、Set
1.1 特点:无序、对象不能重复
1.2 遍历
1.2.1 foreach
1.2.2 迭代器
1.3 常用实现类
HashSet
TreeSet:根据某种(规则)对里面的元素进行排序
自然比较接口: java.lang.Comparable
比较器: java.util.Comparator
String以AscII码进行比较,返回差值
案例:
//Set集合
//1.特点:无序、唯一
//1.1无序:元素添加的顺序与输出的顺序不一致
//1.2唯一:不能添加重复元素
// Set<String> set=new HashSet<>();
// set.add("王一博");
// set.add("王一宝");
// set.add("王耶啵");
// set.add("肖战");
// set.add("有钱哥哥");
// set.add("搏君一肖");
//
Set<Mingxin> set=new HashSet<>();
set.add(new Mingxin(1, "王一博", 1f));
set.add(new Mingxin(2, "王一宝", 2f));
set.add(new Mingxin(3, "肖战", 3f));
set.add(new Mingxin(3, "肖战", 4f));
//equals方法默认比较的是Object类型,而Object是引用类型,比较的是内存地址
//重写equals方法,先比较hashcode值,再比较equals
//hashcode相同,则比较equals
//hashcode值不相同,则不比较equals
Mingxin mx=new Mingxin();
mx.equals(null);
set.forEach(System.out::println);
//遍历方式(2种)
for (Mingxin mingxin : set) {
System.out.println(mingxin);
}
System.out.println("---------------");
//iterator
//获取迭代器
Iterator<Mingxin> it=set.iterator();
//循环遍历
while (it.hasNext()) {
System.out.println(it.next());
}
}
二、 LinkedHashSet
1)元素是有顺序的
2)元素是不重复的
3)底层数据结构是按照链表的结构存储的 Linked
hashCode
队列 Queue:表示一个先入先出的数据结构(自行研究)
堆栈 Stack:表示一个先进后出的数据结构
压:push
弹:pop
案例:
//使用LinkedList实现堆栈
private LinkedList lst=new LinkedList();
/**
* 压栈
* @param o
*/
public void push(Object o) {
lst.addFirst(o);
}
public Object pop() {
//获取位于顶口的元素
Object first =lst.getFirst();
//删除位于栈顶的元素
lst.removeFirst();
return first;
}
public int size() {
return lst.size();
}
public static void main(String[] args) {
//初始化
MyStack stack=new MyStack();
//压栈
stack.push("王一博");
stack.push("肖战");
stack.push("陈立农");
stack.push("王耶啵");
stack.push("有钱哥哥");
stack.push("博君一肖");
//循环
while (stack.size()!=0) {
System.out.println(stack.pop());
}
}
总结