JAVA复习5(总结+循环链表)
泛型的定義: 在類定義的時候給定一個類型
?
Public class Point<T>?? 給定一個不確定的類型,當類實例化的時候或者使用的時候給定一個確定的類型,則別的數(shù)據(jù)類型就不能使用了
?
Point<String> p=new Point(); 說明這個類 現(xiàn)在只能存放String
Point<Integer> p=new Point(); 只能存放Integer
泛型的類型不能是基本數(shù)據(jù)類型
?
?
?
集合:
?
為了解決數(shù)據(jù)存儲的問題,JDK完成的一套數(shù)據(jù)結構,在開發(fā)中肯定會使用數(shù)組,但是數(shù)組長度是個問題 一旦聲明長度不可改變
?
?
集合就是一套動態(tài)對象數(shù)組? public final Object[] value;
?
?
順序集合:
?
??????????????????????????? Collection 最大的父接口
?
?List?? 特點: 有序 可重復????????? 本身也是接口???????????????????? Set? 不可重復
?
?
使用以上接口,則必須實例化該接口的實現(xiàn)類:
?
List :? ArryList?? Vector?? LinkedList??
?
ArrayList? Vector 的區(qū)別?
?
ArrayList 異步處理 ,非線程安全? 效率高? 新的類
?
Vector?? 同步處理, 線程安全??? 效率低? 老的類
?
LinkedList 特點: 實現(xiàn)的方式是基于鏈表,在進行數(shù)據(jù)插入 和刪除的時候很方便, 但是查詢效率不高?
?
ArrayList 特點: 基于數(shù)組開發(fā)的,在進行數(shù)據(jù)插入的時候由于在中間部分 效率很低(要移動數(shù)據(jù)) 但是查詢效率很高
?
?
Set:? TreeSet?? HashSet
?
TreeSet? 有序的? 不可重復的集合
?
通過 comparable接口中的 comparTo()方法完成的排序,該方法返回 3個值 1 -1?? 0?
?
?
HashSet 無序的 不可重復的集合
?
通過哈希表完成的數(shù)據(jù)存儲,每個對象都會生成一個HashCode 對應哈希表中索引,根據(jù)Hashcode隨機分配
?
根據(jù)對象中equals方法來判斷集合中的內(nèi)容是否重復
?
注意: 使用自定義類型的時候,一般來說要實現(xiàn) Comparble接口,hashCode 和equals方法
?
?
循環(huán)鏈表:
?
Node1 node2 node3--->? node1
?
擊鼓傳花
| package org.node; ? public class Game { ? ???? //實例化鏈表存儲游戲的人數(shù) ???? ???? LinkList?? list=new LinkList(); ???? ???? ???? int num; //總人數(shù) ???? ???? int key; // 數(shù)到幾退出 ???? ???? ???? // 初始化游戲的方法 ???? ???? public Game(int num,int key) { ????????? ????????? this.num=num; ????????? ????????? this.key=key; ???? } ???? ???? ???? public void play()throws Exception{ ????????? ????????? ????????? for(int i=0;i<num;i++) {? //把游戲人數(shù)增加到鏈表中 ?????????????? ?????????????? list.add(i, i); ????????? } ????????? ????????? System.out.println("-----------游戲開始之前------------------"); ????????? ????????? for(int i=0;i<list.size;i++) { ?????????????? ?????????????? System.out.print(list.get(i)); ????????? } ????????? ????????? System.out.println("------------------游戲開始------------------------"); ????????? ????????? int jCount=num; //開始人數(shù) 等于總人數(shù) ????????? ????????? int j=0; //累加器 ????????? ????????? Node node=list.head; //把一個頭節(jié)點賦值給一個節(jié)點 ????????? while(jCount!=1) { ?????????????? ????????? ???? if(node.getElement()!=null&&Integer.parseInt(node.getElement().toString())!=-1) { ??????????????????? ??????????????????? j++; ??????????????????? ??????????????????? if(j%key==0) { ???????????????????????? ???????????????????????? node.setElement(-1); ???????????????????????? jCount--; ???????????????????????? System.out.println(); ???????????????????????? for(int i=0;i<list.size;i++) { ????????????????????????????? ????????????????????????????? System.out.print(list.get(i)+" "); ???????????????????????? } ??????????????????? } ?????????????? } ?????????????? node=node.next; ????????? } ????????? ????????? System.out.println("---------游戲結束了------------------------"); ????????? ????????? for(int i=0;i<list.size;i++) { ?????????????? ?????????????? System.out.print(list.get(i)+" "); ????????? } ???? } ???? ???? public static void main(String[] args) throws Exception { ????????? ????????? Game g=new Game(10, 3); ????????? ????????? g.play(); ???? } } ? |
?
總結
以上是生活随笔為你收集整理的JAVA复习5(总结+循环链表)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LG 新能源有望上半年决定在亚利桑那州建
- 下一篇: 比亚迪汽车宣布联合抵制网络水军