一、 Collection
|—————— 增添:add() addAll()
|—————— 判断: contains() containAll() isEmpaty()
|—————— 删除:clrar() remove() removeAll() retainAll()
|—————— 获取:size() toArray() iterator()
|
*****************List集合***************** 相对有序,不排重
二、 |–List
|------------------ 因为List集合有角标的,所以可以通过角标访问集合元素,所以增加了通过角标访问的方法
|------------------ 意思就是说再Collection基础方法上,List集合基本只是增加了角标参与的方法
|------------------ 插入:add(index,elemet) addAll(index ,collection)
|------------------ 判断: 没有新方法
|------------------ 删除:remove(index)
|------------------ 获取:get(index) indexOf(element) subList(start,end) iterator() ,listIterator()
| lastIndexOf(Object o)
|------------------ 改 : set(index,element)
|------------------
|--ArrayList :基本所有方法实现List中方法,意思是只要记住List中方法就行
|
|--LinkedList :大部分方法和List一样, 特有方法是对集合头和尾的操作
|------------------添加:addFrist(),addLast()
|------------------删除:removeFirst() ,removeList() //这两个方法的返回值是被删除的元素
|------------------查找:getFirst(),getLast()
|------------------ 因为以上方法若集合为空会有异常,可以被替代 add变offer,get变peek,remove变poll
|------------------ 替代包含List的add等方法 ,所以看着方法多
|
|--Vctor :Vctor 与 ArrayList 常用方法几乎一样,方法中含有elements就是他的特有方法,但是功能可以被
| 其他方法代替,意思就是他的特有方法等同于没有,还有他是同步的ArrayLis不同步
|
|--Stack: 栈的存储结构:压栈(添加) push() 删除栈顶:pop() 要返回
查看栈顶peek() 返回但不删除
|------ Vctor 中的方法都可用,只是会破坏Stack的存储结构,意思就是要用这个就没得必要用Vctor的方法了
***************************Set集合**********相对无序,排重
|
三、 |–Set : Set的方法和Collection的是一致的,意思是只要记住Collection 的方法就行
|–HashSet:
|—LinkedHashSet
|–Hashtable :
|–Properties:
|–TreeSet : 因为存储结构为二叉树,所以有对节点的操作,需要用的时候查阅API就行老师没细讲,其实
现在用到的基本也是Collection中方法1Hashtable,HashSet区别:1.HashSet允许存在null的键和值,Hashtable不允许
2.HashSet线程不安全(不同步)Hashtable线程安全(同步
四、Set集合及其实现类,重点是排重,和排序:
1.如何排重:传入的对象,要重写 equals() 方法,hashCode() 方法
2.如何排序:
i.让存入的元素自身具有比较性:自然排序
方法: 存入的对象的 类 要 implements Comparable 接口 重写 compareTo()方法
ii.让集合根据需求排序 : 定制排序
方法:调用Set集合中含有比较器的构造方法,传入 比较器 Comparator 的实现类
1)如何写比较器: 定义类 implements Compartor 实现 compare() 方法
compareTo() 和compare() 方法基本一样的
2)要想简单可以直接让传入的类直接实现 Compator 接口 重写 compare()方法
当然也可以重写定义类实现
写点伪代码帮助理解:向TreeSet 集合中 传入 多个 Person 类对象并按姓名排序 ,定制排序的方法
class Person {
String name;
int age;
Person(String name ,int agr){
this.name =name; this.age=age;
}
equals(){}; hashCode(){} //排重要重写这两个方法
getName(){};
getAge(){};
}
class MyComperator implements Compator<Person>{
public int compare(Person p1,Person p2){
int num = p1.getName().compareTo(p2.getName());
if(num==0)
return p1.getAge() - p2.getAge();
return unm;
}
}
class Test{
public static void main(){
MyComperator myCom =new MyComperator();
Set<Person> set = new TreeSet(myCom);
}
}
传入比较器集合就会按照比较的顺序给元素排序
Collection ,List ,Set 及其实现类遍历或者获取元素其实用Iterator就行,
用法:
1.要遍历的List或Set 集合对象 set
2. Iterator<Person> it = set.iterator();
3. while(it.hasNext()){
Person p = it.next();
//获取到对象就可进行操作了,再结合基本方法就可实现复杂操作了
}
List集合有个特有的ListIterator 可以选择使用
Iterator 只提供了remove()集合元素的方法
ListIterator 提供了增删查改的所有方法
“`