Javaデータ構造のカスタム実装Listセット
18673 ワード
Javaカスタム実装Listセット
文書ディレクトリ Javaカスタム実装Listセット 1.配列実装 1.1 ArrayListセット を構築する2.チェーンテーブルは を実現する. 2.1LinkedList 2.1.1構築ノード 2.1.2チェーンテーブルセット を構築する.
テーマ:任意のタイプ、任意の長さをサポートする容器(集合)を設計し、削除・変更を実現する方法.
1.配列実装
1.1 ArrayListコレクションの構築
2.チェーンテーブル実装
2.1LinkedList
2.1.1構築ノード
2.1.2チェーンテーブルセットの構築
注意:チェーンテーブル実装では、要素を追加する操作のみが追加されます.
文書ディレクトリ
テーマ:任意のタイプ、任意の長さをサポートする容器(集合)を設計し、削除・変更を実現する方法.
1.配列実装
1.1 ArrayListコレクションの構築
public class ArrayList {
// Object
Object[] data ;
// ,
int size;
public ArrayList() {
// 10
this(10);
}
ArrayList(int length){
//
data = new Object[length];
}
//
public int getLength(){
return size;
}
// , toString()
// ,
@Override
public String toString() {
// , size
Object[] newdata = new Object[size];
// data
System.arraycopy(data, 0, newdata, 0, size);
// Arrays ,
return Arrays.toString(newdata);
}
//
void add(Object obj){
//
if(size>=data.length){
// , 10
Object[] newdata = new Object[data.length+10];
//
System.arraycopy(data, 0, newdata, 0, size);
}
//
data[size] = obj;
// 1
size++;
}
// ;
public Object getElementByIndex(int index){
if(index<0||index>size){
throw new ArrayIndexOutOfBoundsException(" , :0~"+(size-1));
}
return data[index];
}
//
public int getFirstIndexByElement(Object obj){
for (int i = 0; i < size; i++) {
if(obj.equals(data[i])){
return i;
}
}
return -1;//
}
//
public void deleteElementByIndex(int index){
if(index<0||index>size){
throw new ArrayIndexOutOfBoundsException(" , :0~"+(size-1));
}
System.arraycopy(data, index+1, data, index, size-index-1);
size--;
}
//
public void deleteFirstElement(Object obj){
int index = getFirstIndexByElement(obj);
System.out.println(index);
deleteElementByIndex(index);
}
}
2.チェーンテーブル実装
2.1LinkedList
2.1.1構築ノード
public class Node {
//
Object data;
// next
Node next;
// ,
public Node(Object data) {
this.data = data;
}
}
2.1.2チェーンテーブルセットの構築
public class LinkedListDemo {
//
Node first;
// toString ,
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
//
Node temp = first;
//
while(temp!=null){
// next , ,
if(temp.next!=null){
sb.append(temp.data).append(",");
}else{
// next , ,
sb.append(temp.data).append("]");
}
//
temp = temp.next;
}
return sb.toString();
}
//
void add(Object obj){
//
Node node = new Node(obj);
//
if(first==null){
//
first = node;
}else{
//
Node temp = first;
// next , ,
while(temp.next!=null){
temp = temp.next;
}
//
temp.next = node;
}
}
}
注意:チェーンテーブル実装では、要素を追加する操作のみが追加されます.