collection接口
方法:
add() //添加
remove()//删除
size()//长度
isempty()//判断是否为空
contains();//判断该元素是否在接口中
clear();//全部删除
iterator();//遍历
一.List 接口:有序+可重复
实现类:
1. ArrayList:数组,访问快,添加删除慢
List list=new ArrayList();
list.add("abc");
list.add("efg");
list.add("a");
System.out.println(list.get(1));//efg
list.remove("abc");
System.out.println(list.set(0,"kkk"));//kkk,efg,a
System.out.println(list.indexOf("a"));//1
System.out.println(list.lastIndexOf("kkk"));//0

2.LInkedList:链表,插入删除快,访问慢,需要一个节点一个节点来访问
List<String> list=new LinkedList<>();
list.add("王子文");
list.add("蒋欣");
list.add("刘涛");
list.add("杨幂");
list.add("王子文");
System.out.println(list.size());
for(String l:list){
System.out.println(l);
}
System.out.println("***********");
Iterator<String> i=list.iterator();
while(i.hasNext()){
String s=i.next();
System.out.println(s);
其他方法与上面相同,只是不能通过索引值来访问数据
这里是两种常见的遍历方式。
长度为5,体现了list接口可以重复的特点
3.其次就是Vector :数组
4.Stack :继承Vector类,对于数据结构中的栈,以先进后出(FILO)的方式来存储数据。
Stack <String>s=new Stack<>();
s.push("王子文");
s.push("刘涛");
s.push("蒋欣");
s.push("杨幂");
s.push("关晓彤");
System.out.println(s.search("杨幂"));//2 查询该对象在相对于栈顶位置1的索引值
System.out.println(s.peek());//关晓彤 peek只是查看栈顶该数据不会出栈
System.out.println(s.pop());//关晓彤 pop将栈顶数据移除栈
System.out.println(s.pop());//杨幂 pop将栈顶数据移除栈
System.out.println(s.pop());//蒋欣 pop将栈顶数据移除栈
System.out.println(s.pop());//刘涛 pop将栈顶数据移除栈
二、set接口:无序+不可重复
实现类:
HashSet: jdk 1.8以后:数组+链表(链表长度<8) 数组+红黑树(链表长度>8)
TreeSet:底层实现为二叉树,元素排好序(升降)
LinkedHashSet:底层为双重链表(有序+不可重复)
Set<String> set=new TreeSet<>();
set.add("ss4");
set.add("ss1");
set.add("ss2");
set.add("ss3");
for(String s:set) {
System.out.println(s);
}
}
Comparator和Comparable的区别
-
Comparator:相当于找一个第三方的裁判,比较两个
-
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法