【Java】オーバーロード・オーバーライドまとめ【Java Silver】

こんにちは。くまごろーです。
Java Silverの勉強をしていたら、オーバーロード・オーバーライドがよくわからなくなってきました。
最初わかったつもりでいたんですが、インターフェースや抽象クラスが絡んできたら途端に頭が混乱してきてしまって(-"-)
というわけで、今日はメソッドのオーバーロード・オーバーライドについてまとめます。 
 
 
 
1 オーバーロード/オーバーライドとは

(1)オーバーロード
「メソッドの多重定義」とも呼ばれる、同名のメソッドを複数宣言できる機能。

オーバーロードの条件>
・名前が同じ
・引数の数や型、順番が異なる

※ 戻り値型やアクセス修飾子は関係ない

<例>
(メソッドx)

int sample(double a, int b) {
  //do something
}

(メソッドxのオーバーロード1)

int sample(double a, double b) {  //引数が異なる
  //do something
}

オーバーロード2)

double sample(double a) {  //戻り値等は関係ない
  //do something
}

 
 
(2)オーバーライド

オーバーライドとは、サブクラスでスーパークラスに定義されたメソッドを「再定義」すること。
 
<オーバーライドの条件>
シグニチャ(メソッド名と引数のセット)が同じである
・戻り値は同じ型か、そのサブクラス型である
・アクセス修飾子は同じか、より緩いものである。

 
<例>
(スーパークラス)

class SuperClass {
  void methodA(){
    //do something
  }
}

(サブクラス)

class SubClass extends SuperClass{
  void methodA(){  //シグニチャ・戻り値が同じ
    //do something
  }
}

 
 
 
2 色んなパターン
 
(1)オーバーロードとオーバーライド・共変戻り値が絡むケース
 
(スーパークラス)

import java.util.Collection;

public class A {
  public void sample(Collection arg) {
    System.out.println("A");
  }
}

 
(サブクラス)

import java.util.Collection;
import java.util.List;

public class B extends A {
  public void sample(Collection arg) {  //オーバーライド
    System.out.println("B");
  }

  public void sample(List arg) {  //オーバーロード
    System.out.println("C");  //引数の「List」はCollectionのサブインターフェース
  }
}

(Mainクラス)

/*省略*/
A a1 = new A();
A a2 = new B();
B b1 = new B();

List<String> list = new ArrayList<>();

a1.sample(list);  //A
a2.sample(list);  //B(※)
b1.sample(list);  //C

※ サブクラス(B)のインスタンススーパークラス(A)の型で扱った時、JVMインスタンスオーバーライドしたメソッドがあればそのメソッドを、なければスーパークラスのメソッドを実行する。
※ CollectionはListインターフェースのスーパーインターフェースであり、List型の引数ならCollection型を受け取るメソッドにも適用できる。(Collection型とList型、どちらのメソッドもある場合は、厳密な型(List)が選択される。)このように、メソッドをオーバーライドした際に戻り値型をサブクラスやサブインターフェースに出来る機能を「共変戻り値」という。
 
 
(2)菱形継承問題とオーバーライド
 
(インターフェースA)

public interface A {
  void sample();
}

 
(インターフェースB)

public interface B extends A {
  default void sample() {  //Cとデフォルトメソッドが重複
    System.out.println("B");
  }
}


(インターフェースC)

public interface C extends A {
  default void sample() {  //Bとデフォルトメソッドが重複
    System.out.println("C");
  }
}

 
(クラスD)

public class D implements B, C {
  @Override
  public void sample() {
    B.super.sample();  //BとCどちらの実装を使うか指定する
  }
}


※ インターフェースB,Cは、インターフェースAを継承しており、クラスDはインターフェースB,Cを実装している。
このように、インターフェースの多重実現をした結果、デフォルトメソッドが重複することを「菱形継承問題」という。この場合、Dクラスでデフォルトメソッドをオーバーライドし、その際にBとCどちらのデフォルトメソッドメソッドを呼び出すか指定しないと、コンパイルエラーになる。
 
3 参考
 
Javaの道:クラス(9.オーバーライドとオーバーロード)

【Java】Javaの配列ルールまとめ【Java Silver】

こんにちは。くまごろーです。
Java Silver対策勉強の一環として、今回は配列の規則についてまとめようと思います。
 
 
1 Javaの配列の特徴

 Javaの配列は、配列クラスから作成された「インスタンス」であり、値の集合を扱うことを目的としている。値そのものと、値の集合を扱うインスタンスは異なるものである。
 
<主な特徴>
・ 同じ型、もしくは互換性のある型の値しか扱えない。
・ 扱える要素数インスタンス生成時に決定し、生成後に要素数を変更することはできない。
 
※ 配列には、プリミティブ型の要素を持つものとオブジェクト型の要素を持つものの2種類がある。プリミティブ型は要素で値そのものを扱っており、オブジェクト型は要素として参照を扱っている。
 
配列を利用するには、「配列インスタンスの生成」「初期化」「配列型変数の宣言」「参照の代入」といった作業が必要になる。 
<コード例>

int[] array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;

上記を細分すると・・・

/*配列型変数の宣言*/
int[] array;
 
/*配列インスタンスの生成*/
new int[3];

/*配列の初期化・参照の代入*/
array[0] = 1;
array[1] = 2;
array[2] = 3;

 
 
2 配列型変数の宣言方法
 
(1)基本の形
[ ]を使用して宣言する。

int[] array;


(2)大カッコ[ ]の記述箇所
この[ ]は、データ型の後ろだけでなく、変数名の後ろに記述することもできる。

int array[];

 
(3)多次元配列の場合
多次元配列の場合も、(2)は適用される。

int[][] array;
int array[][];  //変数名の後ろでもok

 
※ 多次元配列の場合は、[ ]をデータ型と変数名の後ろに分けて記述することも可能

int[] array[];  //2次元配列
int[][] array[];  //3次元配列

 
(4)配列型変数宣言時に、要素数は指定できない。
配列型変数には、配列インスタンスへの参照を代入するだけで、素数を指定することはできない

int[2] array;  //コンパイルエラー

 
 
3 配列インスタンスの生成

配列インスタンス生成時には、必ず要素数を指定しなければならない。
また、要素数の指定は、整数値(int型)でなければならない。(long型は使用できない)
 

int[] array = new int[] //要素数を指定していないのでコンパイルエラー
int[] array = new int[2.3] //浮動小数点数もコンパイルエラー

また、以下の様なコードも使用可能。

int array[] = new int[ 4 * 3 ]

int a = 2, b = 6;
int[] array = new int[ a * b];


※ 要素数ゼロの配列インスタンスを生成することも可能。

int array[] = new int[0];

 
 

4 初期化子の使用方法
 
初期化子「{}」を使用すれば、配列インスタンスの生成、初期化、配列型変数の宣言、参照の代入といった作業を一度に行うことが出来る。
 
<基本>

int[] array = { 3, 4, 5 };

int[] array = new int[]{ 3, 4, 5 }; //[]の中は空欄でないとダメ

int[] array =  new int[3]{ 3, 4, 5 }; //[]内に値を記述するとコンパイルエラーになる

 
<多次元配列の場合>

int[][] array = {{ 2, 3 },{ 4, 5 }};

 
※ 初期化子を使用した場合も素数ゼロの配列インスタンスを生成できる。
<基本>

int[] array = {};

int[] array = new int[0];

<多次元配列の場合>

int[][] array = {};

int[][] array = new int[][]{};

 
※ 初期化子を使って配列インスタンスの生成・初期化を同時に行う場合、セミコロンを使用して変数宣言・参照の代入を別々に記述することはできない。

int[][] array;
array = new int{};  //コンパイルエラー

 
 
 
5 要素のデフォルト値について
 
下記のように配列インスタンスを生成した時、要素の中身はまだ何も設定されていない。

int[] array = new int[3];

配列の要素のデフォルト値は以下の様に設定されていて、配列インスタンス生成直後は要素がこの値で初期化されている。

デフォルト値
整数型 0
浮動小数点数 0.0
真偽型 false
文字型 ¥u0000
オブジェクト型 null

 
※ オブジェクト型について

public class Sample{
  int number = 10;
}
public class Main{
  public static void main(String[] args){
    Sample[] sample = new Sample[3];
    int a = sample[2].number;
  }
}

この場合、生成しているのは配列インスタンスであって、Sampleのインスタンスを生成しているわけではないので、要素としてオブジェクト型のデフォルト値「null」で初期化されている。そのため、変数の参照先がなく、NullPointerExceprtionが発生する。
 
 
 
6 cloneメソッドを使用した配列のコピー
 
cloneメソッドを使用すると、同じ値を持った配列インスタンスが複製される。

int[] arrA = { 1, 2, 3 };
int[] arrB = arrA.clone();

ただし、その配列が多次元配列の場合、コピーされるのは1次元目の配列のみである。
二次元目以降は、arrAとarrB、別々の配列から同じインスタンスを参照する形になる。

 
 
7 参考
 
配列 | Java入門

Java Silver 試験対策メモ - Qiita

[java] Java SE 8 Silver メモ - Qiita

【Java】コレクションについてまとめてみた。(Map)

こんにちは。くまごろーです。
今日は先日の記事に続いて、Javaのコレクションの1つ「Map」についてまとめようと思います。

1 Mapとは?

Mapとは、2つの情報をキー(key)と値(value)のペアとして格納するデータ構造。格納した値はキーを指定して読み書きできる。キーの重複は不可になっている。
 
Mapには、以下の様なクラスがある。
 
(1)HashMapクラス
Mapインターフェースの中で最も利用されるクラス。TreeMapと比べて以下の特徴がある。
 ・null:扱える
 ・自動ソート:なし(格納した順番そのまま)
 
(2)TreeMapクラス 
基本的にHashMapクラスと同じだが、以下の点においてHashMapと異なっている。
 ・null:扱えない
 ・自動ソート:あり(キーによって自動的にソートされる)
  
 
2 HashMapクラスについて
Mapインターフェースの中でよく使用されるクラス。
 
(1)HashMapをインスタンス化する

Map<キーの型, 値の型> マップ変数 = new HashMap<キーの型, 値の型>();

 
(2)HashMapの持つメソッド
 

メソッド 意味 戻り値
<要素格納>
put(キー,値) Mapにキーと値のペアを格納
<要素取り出し>
get(キー) キー値に対応する値を取得(なければnullを返す)
<マップの調査>
size() 格納されているペア数を返す int
isEmpty() 素数がゼロであるかを判定 boolean
containsKey(キー) 指定データがキーに含まれているか判定 boolean
containsValue(値) 指定データが値に含まれているか判定 boolean
<要素を削除>
clear() 要素をすべて削除する void
remove(キー) 指定した内容の要素を削除
<その他>
keySet() 格納されているキーの一覧を返す Set<キー>

  
(3)要素の取り出しについて
Mapの要素を一つ一つ取り出す場合、通常の拡張for文で取り出そうとするとエラーが発生する。

<Mapの要素を順に取り出す>

for(キーの型 key: マップ変数.keySet()) {  
  値の型 value = マップ変数.get(key);  //キーを指定して値を取得
  //何らかの処理
}

 
<例>

Map<Integer, String> members = new HashMap<Integer, String>();
members.put(0, "ピカチュウ");
members.put(1, "フシギダネ");
members.put(2, "ヒトカゲ");
members.put(3, "ゼニガメ");
for(Integer key : members.keySer()) {
  String value = members.get(key);
  System.out.println(value);
}

 
 
3 参考

【Java】Javaのデータ型・リテラル・識別子のルールについてまとめてみた。【Java Silver】

こんにちは。くまごろーです。
最近、Java Silverの勉強を進めています。
Javaについては『スッキリわかるJava』の入門編、実践編を使って勉強してきましたが、
その中では出てこなかったようなコード、ルールがたくさんで中々苦戦しています。
というか、資格取得を目的に始めた勉強だけど、普通にためになってます。今まで適当に理解してたところが洗い出されてゆく(=_=)
 
今回は、かなりいい加減に考えていたJavaのデータ型・リテラル等についてまとめます。
本当は前回に引き続きコレクションクラスについて書こうと思ったけど、どうしてもこっちのテーマへの興味の方が勝ってしまって・・・
とにかく、始めます。

 
 
1 Javaのデータ型

 データ型とはデータの種類を表す情報で、Javaには、プリミティブ型参照型の2つのデータ型がある。

(1)プリミティブ型(基本データ型)
整数や浮動小数点数などの数値、真偽値、文字を扱う。

データ型
boolean true,false
char 16ビットUnicode文字(¥u0000~¥uFFFF)
byte 8ビット整数(-128~127)
short 16ビット整数(-32768~32767)
int 32ビット整数(-2147483648~2147483647)
long 64ビット整数(-9223372036854775808~9223372036854775807)
float 32ビット単精度浮動小数点数
double 64ビット倍精度浮動小数点数

 
(2)参照型
オブジェクト型、列挙型、配列型などがある。

 
(3)プリミティブ型と参照型の違い
プリミティブ型は値そのものを扱うのに対し、参照型はインスタンスへの参照(メモリのどこにインスタンスが保存されているか)を扱っている。
 
 
  
 
2 リテラルについて

リテラルとは、ソースコード中に記述する値のことで、Javaでは、整数・浮動小数点数・論理値・文字・文字列のリテラルがある。
 
(1)整数リテラル
整数を扱うリテラル
 
ア 10進数は勿論、2進数・8進数・16進数でも表現できる。
10進数以外での表記方法は以下の通り。

進数 接頭辞 サンプル
2進数 0b 0b11(10進数の3)
8進数 0 016(10進数の14)
16進数 0x 0xa(10進数の10)

 
イ アンダースコア「_」を使用することもできる。(桁数の多い数値リテラルの見やすさを向上させる目的で導入されている)
アンダースコアの使用方法については、以下のルールが定められている。

リテラルの先頭と末尾には記述できない
・記号の前後には記述できない。

<適切な例>

int a = 123_123;
int b = 0b100_001011;

<不適切な例>

int c = _123_123;
int d = 0x_c;

 
ウ 末尾に「L」または「l」を付加すると、long型であることを明示できる。
<例>

long = 1111111111111L;

 

(2)浮動小数点数リテラル
小数部を持つ値を扱う。

ア 指数表現でも表すことができる。 
<表記方法>

[仮数部]e[符号][指数部]

<例>

3.14e3   3.14 ×10の3乗 = 3140
2.12e-2  2.12×10のマイナス2乗 = 0.0212

 
イ  以下の接尾辞で、データ型を明示できる。

データ型 接尾辞
float Fまたはf float a = 3.1415F
double Dまたはd double b =


(3)文字リテラル
文字列リテラルに対し、一つの文字を表現するリテラルJavaでは、char型が文字リテラルを扱う。「'a'」のように、シングルクォーテーションで括って表記する。

Javaは「Unicode」を標準の文字コードに採用しているが、Unicodeは、「U+」の後ろに16進数の数値4桁を付加したコードで文字を表している。Javaではchar型の変数として、「¥u」の接頭辞の後ろに16進数4桁を付加することで、対応する文字を表示させることができる。

<例>

char a = "¥u30A2";
System.out.println(a);   //「ア」を表示する

このように、16進数4桁の数値で文字を表現できるので、char型の変数には0~65535の数値を代入することが出来る
 
<例>

char b = 66
System.out.println(b);  //「B」を表示する

char型変数に代入できるものをまとめると、以下の通りになる。

・シングルクォーテーションで括った文字
・シングルクォーテーションで括った「¥u」から始まるUnicode番号
・0~65535までの数値(負の数は扱えない)

 
 
(4)文字列リテラル
複数の文字を集めたものを指す。「"abc"」の様にダブルクォーテーションで括って使用する。(「文字列」というが、「""」の様に、空文字を指定することもできる。)

 
(5)論理値リテラル
真偽をtrueまたはfalseで表現する。

 
(6)nullリテラル
nullもリテラルの一種。参照型変数が「何も参照しない」ことを表現するために用いられる。
 
 
 
 
3 識別子の命名規則について
 
Javaでは、変数やメソッド、クラスなどの名前のことを「識別子(Identifier)」と呼ぶ。以下のような命名規則がある。

予約語を識別子として使用することはできない
・記号はアンダースコアと通貨記号のみ使用できる
・1文字目に数字は使用できない

Java予約語一覧>

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
instanceof int interface long native
new package private protected public
return short static strictfp super
switch synchronized this throw throws
transient try void volatile while
_(アンダースコア)

Chapter 3. Lexical Structure


<適切な例>

int _a = 1;
int b$ = 2;

<不適切な例>

int 8a = 1;
int ${a} = 2;

 
 
 
4 参考
 
リテラル | Java入門

Study Java Silver 1 - Qiita

Javaのお勉強 ~その4~ リテラル - Qiita

【Java】コレクションについてまとめてみた。(Set)

こんにちは。くまごろーです。
今日は先日の記事に続いて、Javaのコレクションの1つ、「Set」についてまとめようと思います。


1 Setとは?
 
Setとは、要素を順番付けしないで管理するデータ構造で、以下の特徴がある。

(1)それぞれの要素には、重複が許されない
 Setクラスはadd()メソッドを呼び出すことで要素を格納できるが、重複した値を格納しようとすると、無視される。

(2)set()やget()がない
 Setクラスには要素同士に順序がないので、「〇番目」という概念がない。そのため、インデックスを使用した操作は行えない。(要素はIteratorや拡張for構文で取得する)

(3)1つずつ取り出す場合の順序は不明
 Setの要素には、基本的に順序関係がない。よって拡張for文やイテレータを使用してセットの中身を1つずつ取り出す場合、どのような順序で要素が取り出せるかはわからない。

  
 
2 Setで使用するメソッド(Setインターフェースで使用できるメソッド)
 

メソッド 意味 戻り値
<要素格納>
add(要素) セットに要素を追加 boolean
<セットの調査>
size() 格納されている要素数を返す int
isEmpty() 素数がゼロであるかを判定 boolean
contains(要素) 指定要素が含まれているか判定 boolean
<要素を削除>
clear() 要素をすべて削除する void
remove(要素) 指定した内容の要素を削除 boolean
<その他>
iterator() 要素を順に処理するイテレータを返す iterator<要素>

※ 要素取り出しのメソッドは無い
 
 
 
3 Setクラスのバリエーション

 「HashSet」と「TreeSet」の2種類がある。それぞれ、以下のような特徴がある。
 
(1) HashSet
・順序は保証されていない。
・nullを扱うことができる。
 
(2)TreeSet
・自然順序付けで整列する。
※ 例えば、String型の文字列をTreeSetに格納すると、辞書順で取り出すことができる。
・nullを扱うことができない。
 
 
 
4 参考

LT(ライトニングトーク)に初挑戦してみた。

こんにちは。くまごろーです。
実は、先日LT会に初参加してみました。


1 そもそもLTとは?

 LTとは、「Lightning talk」の略です。

「ライトニングトーク(lightning talk)」とは、「5分程度の短いプレゼンテーション」のことを言います。ビジネスの場などでは省略して「LT」と呼ぶこともあります。
ライトニングトークの目的は、5分間と言う短い時間のスピーチをすることで、発表者は気負わず、聞き手は様々な話が聴けるという技術的なつながりやコミュニケーションです。

「ライトニングトーク」とは?意味を解説します! | 意味解説

LTってプログラミング初学者には縁のないものだと思ってたんですが、そんなことないんですね。自分の経験や学習の成果をアウトプットできるということで、自分にプラスになりそうだなあとは思ってたんですが、機会と勇気がなくて中々挑戦できずにいました。
そんな中、同じコミュニティの方がLT会を主催しているのを見つけて、「ここで挑戦できなかったらいつ挑戦できるんだ!」と思い、半ば勢いで参戦表明しました(-_-;)
 
ちなみに、今回のテーマは「紹介したいおすすめアプリ」でした。
 
 
 
2 準備編

(1)参考資料探し
今回がLT会初参加で、他人の発表すら見たことがなかったので、とりあえずHow to記事を漁りました。
参考になった記事を載せておきます↓

 
(2)紹介するアプリを決める
今回のテーマは「紹介したいアプリ」でした。昔使ってた「Drops」という単語学習アプリが中々特徴的で面白かったので、こちらを紹介することにしました。
play.google.com

Drops:  言語学習

Drops: 言語学習

  • PLANB LABS OU
  • 教育
  • 無料
apps.apple.com

 
(3)スライド作成
テーマが決まったので、次はスライド作成です。
この時点の私は「なんのツールでスライドを作ればいいんだろう?そもそも、パワーポイント以外知らないけどこのパソコンにパワポは入っとらん・・・(=_=)」という感じでした。どんなツールがあるのか調べてみたんですが、無料なのにおしゃれで使いやすいものが多い!パワーポイントなんて必要ないやんって思っちゃいました笑
ツールについては、こちらのページがよくまとまっていて参考になりました。

私は、とりあえず今回はとっつきやすい「Googleスライド」を使用することにしました。

 
(4)実際喋ってみる
のんびりスライド作成してたら、完成した時にはもう当日になってました(-_-;)今回のLT会はすごい気軽な気持ちで参加できそうな雰囲気だったので、しっかりしたリハーサル?的なものはせず、スライド修正がてら、アニメーションに合わせて軽く喋ってみただけで本番に臨みました。

 

3 実際参加してみてどうだったか

LT会に出席された方は私含め8名で、LT登壇したのは4名でした。そして、その中の約半分はエンジニアの方でした!最初は現役のエンジニアの方がいる中で発表するの緊張するな(-_-;)と思ったんですが、皆さんすごい親しみやすい方たちばかりで、発表者の方がチョイスしたアプリも面白いものばかりで、本当に楽しかったです!今回思い切って参加して、本当によかったなーと思いました。

LTに挑戦してみてよかったな、と思ったこと↓

  • 「LT登壇した」ということで、自分にちょっと自信を持てる。
  • 発表内容の吟味、資料集め、スライド作成等しなきゃいけないので、今後の良い経験になる
  • 他の人のLT発表から、興味深い知識・情報を得られる。
  • 新しい繋がりが得られる(これ本当よかったです)

 
 
 
4 今回の反省

実際発表してみると、準備しているときには気づかなかった課題も見えてきました。

  • スライドがあるとはいっても、話したい要点とか流れとか書いたメモがある方がよさそう

LT会自体はすごいリラックスできる雰囲気ではあったんですが、メモなしで喋ってると流石に話の持って行き方をミスったり、説明が冗長になってしまうということがありました。「スピーカーノート」という機能はこのためにあるんですね(-"-)今度からは使っていこうと思いました。

  • どの点を強調したいのか、アピールポイントがどこなのかもっと吟味した方がいい

実際発表してみると「アプリの概要説明」みたいな感じになってしまって盛り上がりに欠けた感じがしました。「このアプリのすごいところ」をもっと重点的にアピールすべきだったなと後悔。

  • スライドの1ページ毎の文字数が多かった

LTって5分しかないので、1ページに文字を詰め込むよりは、簡略なスライドをどんどん流していった方がテンポがいいし、聴き手もすっと理解できそうだなと感じました。


ちなみに、今回使用したスライドはこんな感じです。

 
 
5 参考資料まとめ

  • LT全般について

猿でもわかるLT~はじめてのライトニングトーク~|mc_kurita|Members|note

ライトニングトーク(LT)準備の参考資料まとめ - Qiita

はじめてのLTはこんな感じ - Qiita

  • スライド作成ツール

LTに使えるオンラインプレゼンツール 7例 - Qiita
 
 
また近いうちに挑戦しようと思います。

【Java】コレクションについてまとめてみた。(List)

こんにちは。くまごろーです。
最近また『スッキリわかるJava 実践編』をやり始めて、コレクションについて勉強しました。
今までListとかMapとかは、調べながら実際に使ったことはあったのですが、正直具体的にどういうものなのかはよくわかってませんでした。
というわけで、これからまとめておこうと思います。

 
 
1 コレクションとは
 
Javaには、「データをまとめて格納するための入れ物クラス」がAPIとして準備されている。それらはjava.utilパッケージに属していて、コレクションフレームワークと総称されている。コレクションクラスには以下のようなものがある。

  • リスト(List)

順序どおりに並べて格納する(中身の重複は可能)

  • セット(Set)

順序があるとは限らない(中身の重複は不可)

  • マップ(Map)

ペアで対応付けて格納する


2 Listの使い方(ArrayList

(1)ArrayListの宣言

ArrayList<型>変数名 = new ArrayList<型>();

 
 
(2)メソッド(要素の追加・取得・削除・調査)

メソッド 意味 戻り値
add(値) リストの最後に要素を追加 boolean
add(x,値) リストのx番目に要素を挿入 void
set(x,値) リストのx番目にの要素上書き
get(x) x番目の要素を取り出す
size() 格納されている要素数を返す int
isEmpty() 要素がゼロであるか判定 boolean
contains(値) 指定要素が含まれているか判定 boolean
indexOf(値) 指定要素が何番目にあるか検索 int
iterator() 要素を順に処理するイテレータを返す iterator<~>
clear() 要素をすべて削除する void
remove(値) int番号の要素を削除する


 
(3)for文を用いたリスト要素の取り出し
 

for(int i = 0; i < リスト変数.size(); i++){
  //リスト変数.get(i)で要素を読み書き
}

 
※ 拡張forの場合

for(リスト要素の型 e : リスト変数){
  //eで要素を読み書き
}

 
(4)LinkedListとは
Listには、LinkedListというクラスもあり、以下の様な仕様になっている。

次にLinkedListクラスを見ていきます。ArrayListと似ていますが、中に含まれる要素がどのように並んでいるかを別に管理しているため、要素を追加したり削除したりする場合にArrayListと比較して高速に動作します。逆に要素を検索しようとする場合は先頭から順にリンクをたどって検索するためArrayListと比較して遅くなります。

LinkedListクラス - コレクション(LinkedList) - Java入門

 
(5)ArrayListとLinkedListの違い

ArrayList LinkedList
内部構造 配列 連結リスト
要素の挿入・削除 遅い 高速
指定位置の要素の取得 高速 遅い