package j2.lesson07;
import java.util.AbstractList;
import java.util.List;
/**
* 課題2004 - 解答例.
* 二つのリストを連接したリスト.
* @author arakawa
* @version $Id: SyzygyList_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
*/
public class SyzygyList extends AbstractList {
private final List head;
private final List tail;
/**
* 連接リストのインスタンスを作成する。
* @param head 前半のリスト
* @param tail 後半のリスト
*/
public SyzygyList(List head, List tail) {
super();
this.head = head;
this.tail = tail;
}
/**
* この連接リストの指定した位置にある要素を返す。
* @param index 要素を取得する位置
* @return 取得した要素
*/
public Object get(int index) {
int headSize = this.head.size();
if (index < headSize) {
return this.head.get(index);
}
else {
return this.tail.get(index - headSize);
}
}
/**
* この連接リストの指定した位置にある要素を、指定した値に置き換える。
* @param index 要素を置き換える位置
* @param element 指定された位置に格納される要素
* @return 指定された位置に以前あった要素
*/
public Object set(int index, Object element) {
int headSize = this.head.size();
if (index < headSize) {
return this.head.set(index, element);
}
else {
return this.tail.set(index - headSize, element);
}
}
/**
* この連接リストの合計サイズを取得する。
* @return 合計サイズ
*/
public int size() {
return this.head.size() + this.tail.size();
}
}
|