より多くの結合オブジェクト指向の考え方:;第二のパッケージ:最初の2つの利点が、単鎖クラスの内部を経由して第3版、そうあります。内部クラスノードノードリンクobjectlistを定義し、ノードが作成及び演算ノードを実行するため、objectlist担う内部接続ノードに関連する操作を実行する責任があります。コードは以下の通りであります:
リンクカテゴリ:
輸入java.net.Inet4Address;
/ **
*これは、ノードクラスのobjectlistの内部にはさらに多くのオブジェクト指向の考え(ノードからなるリストで)一緒に貼り付けを書かれ、クラスリストで、このクラスアクションは、操作ノードである
ノード動作する方法を定義*
* /
publicクラスのリンク{
プライベートノードルートを; //最初のノードセット
の長さを計算するために使用//リンクリスト;プライベートint型のカウント= 0
プライベートint型のインデックスを= 0; //インデックス定義
プライベート文字列[] returnArray; //出力するためのリンクリストデータの配列を定義する
パブリック文字列[]のtoArrayを(){
IF(this.root == NULL){
戻りNULL;
}
this.index = 0;
this.returnArray =新しい新しいString [this.count];
this.root.toArrayNode();
this.returnArrayを返す;
}
// deleteメソッド
公共ボイド削除(文字列データ){
IF(this.contains(データ)){
IF(data.equals(this.root.data)){
this.root = this.root.next;
}
}他{
this.root.next.removeNode(this.root、データ);
//この場合、次のノードは、このノードです。ルート
} this.count--;
}
//修飾法
公共ボイドSET(INTインデックス、文字列データ){
IF(指数>(-this.count 1)||インデックス<0){
リターン;
}
this.index = 0 ;
this.root.setNode(インデックスデータ);
}
/ **
*ノード情報を取得する
* /
パブリック文字列GET(INTインデックス){
(インデックス>(-this.count 1)||インデックス<0){IF
ヌルリターン;
}
this.index = 0;
this.root.getNode(インデックス)を返す;
}
/ **
**ポインタノードがメソッド提供される
* /
公共ボイドsetIndex(INTインデックス){
this.index =インデックスを;
}
//得られたリスト長
公共int型のサイズ(){
戻りthis.count;
}
//リストが空であるか否かを判断する
パブリックブールのisEmpty(){
this.count == 0を返す;
}
//方法containsNodeノードクラスを呼び出して、送信に係りますデータがあるか否かを判断する
パブリックブール(文字列データ)が含ま{
IF(データ== NULL || this.root == NULL){
;リターンfalseには
}
this.root.containsNodeリターン(データ);
}
パブリックリンク(){
}
メソッド呼び出しノード//クラスノード増加
//増加は、ノードのみ考えるようにノードは、この操作のためのノードであることに留意すべきである
公共のボイドの追加(文字列データ){
IF(データ== NULL){
;リターン
}
=ノードノード新しい新しいノード(データ);
this.count ++; //ノードを作成する++アウトカウント
IF(this.root == nullの){
this.root =ノード;
}他{
this.root.addNode(ノード);
}
}
// * ************************************************** ***************
/ **
**このノードのクラスであり、これの役割は、ノードのクラスを作成することである
* /
プライベート・ノードクラス{
プライベートデータ列;
プライベート次のノード;
//設定パラメータを持っている
{パブリック・ノード(文字列データ)
データ= this.data;
}
引数なし//コンストラクタ
パブリック・ノード(){
}
/ **
リンクリストデータに*アレイ出力
* /
公共ボイドtoArrayNode(){
Link.this.returnArray [Link.this.index ++] = this.data;
IF(this.next = NULL!){
this.next.toArrayNode();
}
}
//最初の時間(リンク)前= this.rootコール; = Link.root.nextこの
//秒以前= this.root.next呼び出し時間(ノード)= Link.root.next.next.nextこの
公共ボイドがremoveNode(前のノード、文字列データ){
IF(this.data.equals(データ)){
previous.next = this.next。
他{}
this.next.removeNode(前の、データ); this.next親ノードがある//この
}
}
/ **
* *ノード情報の設定方法
* /
パブリック無効setNode(int型のインデックス、文字列データ){
IF (インデックス== Link.this.index ++){
this.data =データ;
}そうでなければ{
this.next.setNode(インデックスデータ);
}
}
/ **
**ノード情報取得方法
* /
パブリック文字列getNodeを(INTインデックス){
IF(インデックス== Link.this.index ++){
this.data返す;
}他{
this.next.getNodeリターン(インデックス);
}
}
/ **
*検索方法は、番号が存在するか否かを判断する
* /
パブリックブールcontainsNode(文字列データ){
IF(data.equals(this.data)){
; trueに戻り
} {他の
IF(!this.next = NULL){
(データ)this.next.containsNodeを返す;
}他{
falseに復帰;
}
}
}
/ **
*増加したノード
* /
//最初の呼び出し(リンク): = Link.rootこの
// 2番目のコール(ノード):これはLink.root.nextを=
公共ボイドにaddNode(ノードノード){
IF(this.next == NULL){
this.next =ノード。
}他{
this.next.addNode(ノード)。
}
}
パブリック文字列のgetData(){
戻りデータ。
}
公共ボイドのsetData(文字列データ){
this.data =データ。
}
パブリック・ノードgetNextを(){
次返します。
}
公共ボイドsetNext(次のノード){
this.next =次回。
}
}
}
LinkeText类。
/ **
*
* /
パッケージlianbiaoDemo03;
publicクラスlinkText {
パブリック静的無効メイン(文字列[] args){
(=リンクリンクリンク新しい新規);
link.add( "ひょうたん1。");
link.add(「ひょうたん2 ");
link.add("ひょうたん3。 ");
link.add("ひょうたん4。 ");
link.add("ひょうたん5「);
//するSystem.out.println(link.size() );
//のSystem.out.println(link.isEmpty());
//のSystem.out.println(link.contains( "ひょうたん人形4"));
//のSystem.out.println(link.get(1 ));
// link.set(1、 "猿の王");
// System.out.printlnは(link.get(1));
// link.remove( "ひょうたん人形3");
//システム。out.printlnを(link.get(2))。
文字列[] S = link.toArray()。
以下のために(INT i = 0; I <s.length; I ++){
System.out.printlnは(S [I])。
}
}
}