1. Set
1.1 特点:无序、对象不能重复
Set set =new HashSet();
set.add("a");
set.add("b");
set.add("大黄");
set.add("d");
set.add("f");
1.2 遍历
1.2.1 foreach
for (Object object : set) {
System.out.println(object);
}
System.out.println("__________________");
1.2.2 迭代器
Iterator ito =set.iterator();
while(ito.hasNext()) {
Object next = ito.next();
System.out.println(next);
}
1.3 常用实现类
HashSet
TreeSet:根据某种(规则)对里面的元素进行排序
自然比较接口: java.lang.Comparable
比较器: java.util.Comparator
String以AscII码进行比较,返回差值
@Override
public int compare(User o1, User o2) {
if(o1.getName().hashCode()-o2.getName().hashCode()>0) {
return 1000;
}
else if(o1.getName().hashCode()-o2.getName().hashCode()<0) {
return -1000;
}
else {
return 0;
}
}
Set<User> set =new TreeSet<>(new newComparator());
set.add(new User(1,"罗骁","公"));
set.add(new User(2,"王佳","妖"));
set.add(new User(3,"彭大一","母"));
set.add(new User(4,"彭大一","公"));
for (User user : set) {
System.out.println(user);
}
LinkedHashSet:
1)元素是有顺序的
2)元素是不重复的
3)底层数据结构是按照链表的结构存储的 Linked
hashCode
队列 Queue:表示一个先入先出的数据结构(自行研究)
堆栈 Stack:表示一个先进后出的数据结构
压:push
弹:pop
public LinkedList ls = new LinkedList();
/**
* 压栈 装子弹
* @param obj
*/
public void push(Object obj) {
ls.addFirst(obj);
}
/**
* 出栈 发子弹
* @return
*/
public Object pop() {
Object pop = ls.pop();
return pop;
}
/**
* 拿到集合元素的个数
* @return
*/
public int getSize() {
return ls.size();
}
public static void main(String[] args) {
Demo dm =new Demo();
dm.push("罗志祥");
dm.push("刘某某");
dm.push("易狗");
dm.push("马某某");
while(dm.getSize()!=0) {
Object pop = dm.pop();
int size = dm.getSize();
System.out.println(pop);
System.out.println(size);
}
效果截图