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方法
|