java合集框架第一天
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
| 文章目錄 1?collection接口 2? list接口 3 Iterator 4?Vertor 5? ArrayList 6?LinkedList ? ? ? ? |
???
???????主體部分:
?????? (1)collection
????????? Java中有數字包裝類(Inteager),字符包裝類(String) . 其實也有對象的包裝類----用來裝對象的(通常是一類對象).這樣做的好處是:使用方法和屬性便于管理對象。
?????????這種包裝類叫做容器。 就想我們的水杯一樣,結果都有一定的差異。同樣容器由于數據結構的不同,也有很多類型。他們的父類是collection接口,里面有不少方法。
?????????這些是容器共有的方法,比如:add(),remove(); ?collection又可以分為二大類。該文章介紹list
??????????? collection???????????????
?????????????? ?|_list
??????????????? |_set
?????? 容器的特點
?????????????? (1)只能存儲對象,不能是基本數據類型
?????????????? (2)長度不是固定的---比數組靈活
?????????????? (3)都有自己的數據結構
????(2)List:
????????表面上看"列表", 它也是一個接口,他的子類都是List系類的容器(集合)
??????? List 接口方法和collection差不多,多出來的就是list體系的特點:通過index來訪問列表。比如:add(int index,Object o);remove(int index);//ect
??????? list----|_Vector
?????????????????|_ArrayList
???????????????? |_LinkedList
???????????????? |_其他
????(3)Iterator-----迭代器
??????? 作用:用來訪問集合中的對象,也是一個接口。里面只有3個方法,很重要。hasNext(),next(),remove();
????????? 注意這句話:每一個容器都有一個實現迭代器的內部類。而且控制通過iterator()獲取實體對象。
?????????? ListIterator 是Iterator子接口,同樣的道理,這里多出來的也就是通過index訪問元素的方法。可以crud,效果很猛。
???????? 待會重點說明怎么使用。
???? (4) Vector
??????? 說了那么多接口,終于來個具體的容器。
??????? Vector數據結構----數組類型----訪問速度較慢(crud)---被ArrayList取代
?????? 淘汰了,不多說了。
????????看代碼:
????????
public static void main(String[] args) {Vector v=new Vector();//添加對象---String---二種方法都可以。v.add("abc1");v.addElement("abc2");v.add("abc3");//使用迭代器遍歷。訪問對象for( Iterator it=v.iterator(); it.hasNext();){System.out.println(it.next());}}
???????? (5)ArrayList
????????????數據結構--數組
??????????? 特點:訪問速度快,查詢較慢,和Vector相似,所以取代Vector
???????????? 用法:
???????????
public static void main(String[] args) {List list=new ArrayList();list.add("abc1");list.add("abc2");list.add("abc3");Iterator it=list.iterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("abc2"))list.add("abc0");//出現異常}}
上面出現異常,不能在迭代器遍歷是為容器增加object。此時ListIterator作用出來,使用這個迭代器add(E e)就沒有問題啦
?????
public static void main(String[] args) {List list=new ArrayList();list.add("abc1");list.add("abc2");list.add("abc3");ListIterator it=list.listIterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("abc2"))it.add("abc0");}System.out.println(list); //[abc1, abc2, abc0, abc3]}說白了就是重寫了List里面的方法+自己的一些方法。
??????????(6)LinkedList
??????????? 數據結構---列表
????????????????? 方法豐富:
?????????????????? getFirst();
?????????????????? get(index);
???????????????????getLast();
?????????????????? removeFirst();
???????????????????set(int?index, E element); //替換
???????????????????????等
????????? ?code: 使用LinkedList模擬棧-----先進先出
????????????????????????
package cn.com.List;import java.util.LinkedList;public class ListDemo {public static void main(String[] args) {//使用LinkedList 模仿棧和隊列.//創建棧,myStack stack=new myStack();//進棧stack.add("abc1");stack.add("abc2");stack.add("abc3");//出棧while(stack.hasNext()){System.out.println(stack.get());}System.out.println("____________________________");//創建隊列 和上面類似} //棧public static class myStack{private LinkedList list=null;public myStack(){list=new LinkedList();}public Boolean add(Object o){list.addFirst(o);return true;}public Object get(){return list.removeFirst();}public Boolean hasNext(){if(list.size()==0)return false;else return true;}}//隊列public static class Queue{private LinkedList list=null;public Queue(){list=new LinkedList();}public Boolean add(Object obj){list.addFirst(obj);return true;}public Object get(){return list.removeLast();}public Boolean hasNext(){if(list.size()==0)return false;else return true;}}}
list系類介紹中三個主要的成員,下節說說set系類
?????注: 簡單總結,更多函數看看 api
?????????????
?
???????
????????
?????
轉載于:https://www.cnblogs.com/huang-1995/p/5886747.html
總結
以上是生活随笔為你收集整理的java合集框架第一天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十一、Struts2封装请求参数的方式
- 下一篇: iOS实现自定义的弹出视图(popVie