StringBuffer就可以簡(jiǎn)單的描述該方法使用方式!
公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出淶源免費(fèi)做網(wǎng)站回饋大家。
寫個(gè)小例子吧,看一眼就明白怎么回事了!
因?yàn)镾tringBuffer的append這個(gè)方法每調(diào)用一次,返回依然還是StringBuffer這個(gè)容器本身對(duì)象,所以可以繼續(xù)調(diào)用!當(dāng)然有的類的方法也可以這么調(diào)用!
這只是一個(gè)小案例,用來(lái)解釋是怎么回事,鏈?zhǔn)接玫牡胤教嗔?
Java隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及實(shí)現(xiàn):
類似于使用鏈?zhǔn)浇Y(jié)構(gòu)保存線性表,也可以采用鏈?zhǔn)浇Y(jié)構(gòu)來(lái)保存隊(duì)列的元素,采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的隊(duì)列也被稱為鏈隊(duì)列。
對(duì)于鏈隊(duì)列而言,由于程序需要從rear端添加元素,然后從front端刪除元素,因此考慮對(duì)鏈隊(duì)列增加front、rear兩個(gè)引用變量,使他們分別指向鏈隊(duì)列的頭、尾兩個(gè)節(jié)點(diǎn)。
1、插入隊(duì)列
對(duì)于鏈隊(duì)列而言,插入操作的實(shí)現(xiàn)非常簡(jiǎn)單,只要?jiǎng)?chuàng)建一個(gè)新節(jié)點(diǎn),讓原rear節(jié)點(diǎn)的next指向新節(jié)點(diǎn),在讓rear指向新節(jié)點(diǎn)即可。
2、移除隊(duì)列
對(duì)于鏈隊(duì)列而言,刪除操作的實(shí)現(xiàn)也是非常的簡(jiǎn)單,只要將原front節(jié)點(diǎn)指向原front節(jié)點(diǎn)的next節(jié)點(diǎn),當(dāng)然不要忘記釋放原front節(jié)點(diǎn)的引用。
JAVA集合中的隊(duì)列:
從JDK
1.5開(kāi)始,java的集合框架提供了一個(gè)Queue接口,該接口代表了一個(gè)隊(duì)列。實(shí)現(xiàn)該接口或者實(shí)現(xiàn)繼承了該接口的類可以當(dāng)做隊(duì)列來(lái)使用。Queue里包含了 6
個(gè)方法,用于代表隊(duì)列
所包含的3個(gè)標(biāo)志性方法,如下所示:
(1)插入:在rear端插入元素。
(2)移除:在front端刪除元素。
(3)訪問(wèn):在front端訪問(wèn)元素。
JDK提供的工具類非常強(qiáng)大,它分別代表線性表、隊(duì)列、棧三種數(shù)據(jù)結(jié)構(gòu)提供了兩種實(shí)現(xiàn):順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)。雖然LinkedList工具類的功能非常強(qiáng)大,既可以作為線性表來(lái)使用、又可以作為隊(duì)列來(lái)使用,還可作為棧來(lái)使用,但對(duì)大部分程序而言,使用Arraylist和ArrayDeque時(shí)性能可能比LinkedList更好。
普通:
1:維護(hù)性強(qiáng)
2:對(duì)方法的返回類型無(wú)要求 imprisonment:void-Type
3:對(duì)程序員的業(yè)務(wù)要求適中
鏈?zhǔn)剑?/p>
1:編程性強(qiáng)
2:可讀性強(qiáng)
3:代碼簡(jiǎn)潔
4:對(duì)程序員的業(yè)務(wù)能力要求高
/*
注意:鏈表的結(jié)點(diǎn)數(shù)量用size表示,結(jié)點(diǎn)的位置為0~size-1
*/
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
try{
LinkList list = new LinkList();
Integer value;
int pos = 0;
Scanner input = new Scanner(System.in);
String choice = null;
//測(cè)試A
while(true){
System.out.print("請(qǐng)輸入待插入結(jié)點(diǎn)的值(x或X退出):");
choice = input.next();
if(choice.toUpperCase().equals("X")){
break;
}
value = Integer.valueOf(choice);
if(list.addAt(pos, value) == true){
System.out.println("插入值為 " + value + " 的結(jié)點(diǎn)到當(dāng)前鏈表成功!");
pos++;
}
else{
System.out.println("插入結(jié)點(diǎn)失敗!");
}
}
System.out.print("當(dāng)前鏈表所有結(jié)點(diǎn):");
list.listAll();
//測(cè)試B
while(true){
System.out.print("請(qǐng)輸入待查詢結(jié)點(diǎn)的值(x或X退出):");
choice = input.next();
if(choice.toUpperCase().equals("X")){
break;
}
value = Integer.valueOf(choice);
pos = list.findByValue(value);
if(pos == -1){
System.out.println("當(dāng)前鏈表中不存在值為 " + value + " 的結(jié)點(diǎn)");
}
else{
System.out.println("值為 " + value + " 的結(jié)點(diǎn)在當(dāng)前鏈表中的位置為 " + pos);
}
}
//測(cè)試C
while(true){
System.out.print("請(qǐng)輸入待刪除結(jié)點(diǎn)的位置[0~" + (list.getSize()-1) + "](x或X退出):");
choice = input.next();
if(choice.toUpperCase().equals("X")){
break;
}
pos = Integer.valueOf(choice);
if(list.removeAt(pos) == true){
System.out.println("刪除當(dāng)前鏈表中 " + pos + " 位置的結(jié)點(diǎn)成功!");
}
else{
System.out.println("刪除結(jié)點(diǎn)失敗!");
}
}
System.out.print("當(dāng)前鏈表所有結(jié)點(diǎn):");
list.listAll();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**
* 鏈表結(jié)點(diǎn)類
*/
class Node{
private Object data; //鏈表結(jié)點(diǎn)的數(shù)據(jù)域
private Node next; //鏈表結(jié)點(diǎn)的指針域,指向直接后繼結(jié)點(diǎn)
public Node(){
data = null;
next = null;
}
public Node(Object data, Node next){
this.data = data;
this.next = next;
}
public Object getData(){
return this.data;
}
public void setData(Object data){
this.data = data;
}
public Node getNext(){
return this.next;
}
public void setNext(Node next){
this.next = next;
}
}
/**
* 鏈表類
*/
class LinkList{
private Node head = null; //頭結(jié)點(diǎn)指針
private int size = 0;
public LinkList(){
head = new Node();
size = 0;
}
//在i位置插入元素elem
public boolean addAt(int i, Object elem) {
if(i 0 || i size){
return false;
}
Node pre,curr;
int pos;
for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());
curr = new Node(elem, pre.getNext());
pre.setNext(curr);
size++;
return true;
}
//刪除i位置的元素
public boolean removeAt(int i) {
if(i 0 || i = size){
return false;
}
Node pre,curr;
for(pre=head; i0 pre.getNext()!=null; i--,pre=pre.getNext());
curr = pre.getNext();
pre.setNext(curr.getNext());
size--;
return true;
}
//根據(jù)值value查詢結(jié)點(diǎn)是否存在,若存在返回位置,否則返回-1
public int findByValue(Object value){
Node curr;
int pos;
for(pos=0,curr=head.getNext(); curr!=null; pos++,curr=curr.getNext()){
if(curr.getData().toString().equals(value.toString())){
break;
}
}
if(curr==null){
return -1;
}
return pos;
//return (curr!=null ? pos : -1);
}
public int getSize(){
return size;
}
public boolean isEmpty(){
return (size==0);
}
public void listAll(){
for(Node curr=head.getNext(); curr!=null; curr=curr.getNext()){
System.out.print(curr.getData() + "\t");
}
System.out.println();
}
}
class A{
public B getB(){
return new B();
}
}
class B{
public a getA(){
return new A();
}
}
public static void main(String args[]){
B b = new A().getB().getA().getB(); //類似于這樣的
}