더 결합 객체 지향 사고 : 둘째 패키지 : 처음 두 장점은 단일 사슬 클래스의 내부의 방법으로 버전 3, 너무있다. 내부 노드 클래스 노드 링크 통해 Objectlist 정의 노드 생성 및 조작을 수행하는 노드, 책임 통해 Objectlist 내부 접합 노드와 관련된 동작들을 수행 할 책임이있다. 다음과 같이 코드입니다 :
링크 카테고리 :
가져 오기 java.net.Inet4Address;
/ **
* 이것은 훨씬 더 (노드로 구성된리스트) 함께 부착 된 사고 객체 지향 통해 Objectlist 노드 클래스의 내부로 작성된 클래스 목록,이 집단 소송이 동작 노드,
* 노드 운영 방법 정의
* /
공용 클래스 링크 {
개인 노드 루트; // 첫 번째 노드 설정
개인 INT 카운트 = 0;의 길이를 계산하는 데 사용 // 연결리스트
개인 INT 지수 = 0; // 인덱스 정의
개인 문자열 [] returnArray // 출력 링크 된리스트 데이터의 배열을 정의
공개 문자열 []를 toArray () {
IF (this.root == NULL) {
는 null;
}
this.index = 0;
this.returnArray = 새로운 새 문자열 [this.count]
this.root.toArrayNode는 ()
; this.returnArray를 반환
}
방법을 삭제 //
{(문자열 데이터)를 공용 공극을 제거
IF (this.contains (데이터)) {
(data.equals (this.root.data)) {IF
this.root = this.root.next;
}
}는 사람이 {
this.root.next.removeNode (this.root, 데이터);
//이 경우 다음 노드는이의 노드입니다. 루트
} this.count--;
}
// 수정 방법
공개 무효 세트 (INT 지수, 문자열 데이터) {
IF (. 인덱스> (-this.count 1) || 인덱스 <0) {
반환;
}
this.index = 0 ;
this.root.setNode (지표 데이터)
}
/ **
* 노드 정보 취득
* /
공용 문자열 GET INT (인덱스) {
IF를 (인덱스> (-this.count 1) || 인덱스 <0). {
반환 값 null;
}
this.index = 0;
this.root.getNode (인덱스)를 반환;
}
/ **
** 포인터 노드가 제공 방법
* /
공개 무효 setIndex (INT 인덱스) {
this.index = 인덱스;
}
// 결과 목록 길이
공개 INT 크기 () {
this.count를 돌려는;
}
// 목록이 비어 있는지 여부를 판단한다
() {공중 부울 IsEmpty 함수
; this.count == 0 반환
}
변속기에있어서, 상기 방법 containsNode 노드 클래스를 호출을 // 데이터가 있는지 여부를 판단
공개 부울은 (문자열 데이터)를 포함 {
만약에 (데이터 == 널 || 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 인덱스) {
경우 (인덱스 == Link.this.index ++) {
this.data 반환;
}는 다른 {
this.next.getNode 창 (인덱스);
}
}
/ **
* 검색 방법은 번호가 존재하는지 여부를 판정한다
* /
공용 부울 containsNode (문자열 데이터) {
(data.equals은 (는 this.data)) {IF
; true로 반환
} {다른
IF (this.next = 널!) {
this.next.containsNode (데이터);
}는 다른 {
false로 반환;
}
}
}
/ **
* 증가 노드
* /
// 첫 번째 호출 (링크) : = 이것은 Link.root
번째 호출 (노드) // :이 Link.root.next를 =
공공 무효 addNode 명 (노드 노드) {
경우 (this.next == NULL의) {
this.next = 노드;
사용한다} else {
this.next.addNode (노드);
}
}
공공 문자열 GetData의 () {
반환 데이터;
}
공개 무효 사항 setData (문자열 데이터) {
this.data = 데이터;
}
공공 노드 GETNEXT () {
다음 반환;
}
공공 공극 setNext (다음 노드) {
this.next = 다음;
}
}
}
LinkeText类:
/ **
*
* /
패키지 lianbiaoDemo03;
공용 클래스 링크 텍스트 {
공공 정적 무효 메인 (문자열 []에 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]);
}
}
}