import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class P017 {
public static void main(String[] args) {
IntList il1 = new IntList(3);
System.out.println(il1);
IntList il2 = il1.reverse();
System.out.println(il2);
IntList il3 = il1.concat(il2);
System.out.println(il3);
System.out.println(il3.sum());
// 【重要】元のデータが破壊されてないか、必ずチェックすること
System.out.println(il1);
System.out.println(il2);
}
}
class IntList {
List<Integer> list = new ArrayList<Integer>();// フィールド
// ② 引数無しのコンストラクタ:list を空のリストで初期化する.
IntList() {
}
// ③ int 型の引数 n をとるコンストラクタ:list を 1~n の n 個の整数を要素とするリスト にする.
IntList(int n) { // コンストラクタ
for (int i = 1; i <= n; i++) {
list.add(i);
}
}
void add(int n) {
list.add(n);
}
int get(int i) {
return list.get(i);
}
int size() {
return list.size();
}
// ⑦ IntList reverse():この整数リストの内容を反転した整数リストを作成
IntList reverse() {
IntList il2 = concat(null);
try {
Collections.reverse(il2.list);
} catch (UnsupportedOperationException ex) {
ex.printStackTrace();
}
return il2;
}
// ⑧ IntList concat(IntList l):この整数リストの末尾に別の整数リスト l の内容を追加し たリストを作成し,IntList オブ
// ジェクトとして返す
IntList concat(IntList l) {
IntList il2 = new IntList();
// クローン(Shallow Copy)、Deep Copyでは無い
il2.list = new ArrayList<Integer>(list);
if (l != null) {
il2.list.addAll(l.list);
}
return il2;
}
// ⑨ int sum():この整数リストに含まれる整数の総和を返す.
int sum() {
int a = 0;
for (Integer i : list) {
a += i;
}
return a;
}
// print文で使えるようにしている
@Override
public String toString() {
return list.toString();
}
}