JAVA复习5(总结+循环链表)
泛型的定義: 在類定義的時(shí)候給定一個(gè)類型
?
Public class Point<T>?? 給定一個(gè)不確定的類型,當(dāng)類實(shí)例化的時(shí)候或者使用的時(shí)候給定一個(gè)確定的類型,則別的數(shù)據(jù)類型就不能使用了
?
Point<String> p=new Point(); 說(shuō)明這個(gè)類 現(xiàn)在只能存放String
Point<Integer> p=new Point(); 只能存放Integer
泛型的類型不能是基本數(shù)據(jù)類型
?
?
?
集合:
?
為了解決數(shù)據(jù)存儲(chǔ)的問題,JDK完成的一套數(shù)據(jù)結(jié)構(gòu),在開發(fā)中肯定會(huì)使用數(shù)組,但是數(shù)組長(zhǎng)度是個(gè)問題 一旦聲明長(zhǎng)度不可改變
?
?
集合就是一套動(dòng)態(tài)對(duì)象數(shù)組? public final Object[] value;
?
?
順序集合:
?
??????????????????????????? Collection 最大的父接口
?
?List?? 特點(diǎn): 有序 可重復(fù)????????? 本身也是接口???????????????????? Set? 不可重復(fù)
?
?
使用以上接口,則必須實(shí)例化該接口的實(shí)現(xiàn)類:
?
List :? ArryList?? Vector?? LinkedList??
?
ArrayList? Vector 的區(qū)別?
?
ArrayList 異步處理 ,非線程安全? 效率高? 新的類
?
Vector?? 同步處理, 線程安全??? 效率低? 老的類
?
LinkedList 特點(diǎn): 實(shí)現(xiàn)的方式是基于鏈表,在進(jìn)行數(shù)據(jù)插入 和刪除的時(shí)候很方便, 但是查詢效率不高?
?
ArrayList 特點(diǎn): 基于數(shù)組開發(fā)的,在進(jìn)行數(shù)據(jù)插入的時(shí)候由于在中間部分 效率很低(要移動(dòng)數(shù)據(jù)) 但是查詢效率很高
?
?
Set:? TreeSet?? HashSet
?
TreeSet? 有序的? 不可重復(fù)的集合
?
通過 comparable接口中的 comparTo()方法完成的排序,該方法返回 3個(gè)值 1 -1?? 0?
?
?
HashSet 無(wú)序的 不可重復(fù)的集合
?
通過哈希表完成的數(shù)據(jù)存儲(chǔ),每個(gè)對(duì)象都會(huì)生成一個(gè)HashCode 對(duì)應(yīng)哈希表中索引,根據(jù)Hashcode隨機(jī)分配
?
根據(jù)對(duì)象中equals方法來(lái)判斷集合中的內(nèi)容是否重復(fù)
?
注意: 使用自定義類型的時(shí)候,一般來(lái)說(shuō)要實(shí)現(xiàn) Comparble接口,hashCode 和equals方法
?
?
循環(huán)鏈表:
?
Node1 node2 node3--->? node1
?
擊鼓傳花
| package org.node; ? public class Game { ? ???? //實(shí)例化鏈表存儲(chǔ)游戲的人數(shù) ???? ???? LinkList?? list=new LinkList(); ???? ???? ???? int num; //總?cè)藬?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ù) 等于總?cè)藬?shù) ????????? ????????? int j=0; //累加器 ????????? ????????? Node node=list.head; //把一個(gè)頭節(jié)點(diǎn)賦值給一個(gè)節(jié)點(diǎn) ????????? 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("---------游戲結(jié)束了------------------------"); ????????? ????????? 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(); ???? } } ? |
?
總結(jié)
以上是生活随笔為你收集整理的JAVA复习5(总结+循环链表)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LG 新能源有望上半年决定在亚利桑那州建
- 下一篇: JAVA复习5(集合——集合的遍历 It