Javaには配列やリストなど、複数のデータを格納するデータ構造がいくつかあります。どのデータ構造にも一長一短あり使い分けが必要ですが、どれを使っていても必要になるのがそのデータ構造の長さです。Javaでは、それぞれのデータ構造にその長さを取得するための簡単な方法が用意されています。ここでは、Javaの配列やリストでその長さを取得する方法について説明します。
配列の長さを取得する
まず初めに、配列の長さを取得する方法について説明します。Javaの配列の長さを求めるにはlengthという属性を使います。lengthの基本的な構文は以下の通りです。
int 変数 = 配列.length
lengthは配列の長さをint型で返します。非常に簡単ですね。
public class Main { public static void main(String[] args){ int[] list1 = {1, 2, 3, 4, 5}; int list1_len = list1.length; System.out.println("list1の長さ:" + list1_len); } }
実行結果
lengthとよく似た構文として、String型のlength()があります。()があるかないかだけですが、全くの別物なので間違えないようにしましょう。
lengthはfor文で配列の要素を一つずつ取り出したいときなどにも利用できます。
public class Main { public static void main(String[] args){ int[] list1 = {1, 2, 3, 4, 5}; for(int i =0; i < list1.length; i++){ System.out.println(list1[i]); } } }
実行結果
2
3
4
5
この例ではfor文を配列の長さだけ繰り返し、配列の要素を一つずつ表示しています。この場合は、配列の長さが分かっているので、直接配列の長さだけfor文を繰り返しても問題なさそうに見えます。
public class Main { public static void main(String[] args){ int[] list1 = {1, 2, 3, 4, 5}; for(int i =0; i < 5; i++){ #これでも問題なく動く System.out.println(list1[i]); } } }
しかし、直接配列の長さを指定した場合、元の配列の長さが変更になった際に、for文の条件まで変更する必要があります。この例のように短い場合はすぐに変更できますが、プログラムが長くなってくるとfor文が複数になって変更箇所が増えたり、そもそもどこにあるのかを探すのも大変になる可能性があります。
for文の条件をlengthによって取得する長さにしておけば、配列の長さが変われば自動でfor文の条件も変わるので、変更が非常に楽になります。
Listクラスの長さを取得する
Javaには配列に似たデータ構造としてListクラスがあります。Listクラスは配列と違って可変型で、いつでもサイズ変更が可能なので、配列以上に長さを取得する機会があります。Listクラスの長さを取得するにはListクラスのsizeメソッドを使います。sizeメソッドの基本的な構文は以下の通りです。
int 変数 = リスト.size()
配列のlengthと同様に、リストの長さをint型で返します。Listクラスを継承しているクラスはすべてsize()が使えます。なので、ArrayListやAttributeListなどを使う場合でもsize()でリストの長さを取得することができます。
package test; import java.util.ArrayList; public class Main { public static void main(String[] args){ ArrayList array_list = new ArrayList(); System.out.println("array_listの長さ(要素追加前):" + array_list.size()); array_list.add("Java"); array_list.add("list"); array_list.add("size"); System.out.println("array_listの長さ(要素追加後):" + array_list.size()); } }
実行結果
array_listの長さ(要素追加後):3
size()でArrayListクラスのリストの長さを取得しています。リストの生成直後は0で、要素をaddしたあとには3に増えているのが分かります。
size()もlengthと同様にfor文の条件式で使うことができます。とくにListは可変型で要素を追加したり、逆に要素を削除したりすることでfor文の直前に長さが変わることもあります。なるべくsize()を使うようにしましょう。
public class Main { public static void main(String[] args){ ArrayList array_list = new ArrayList(); array_list.add("Java"); array_list.add("list"); array_list.add("size"); for(int i = 0; i < array_list.size(); i++){ System.out.println(array_list.get(i)); } } }
実行結果
list
size
マップの長さを取得する
配列やリストと同じくらい使われるデータ構造として、キーと値が対になったマップがあります。マップもリストと同様に可変型で、自由にサイズを変えることが出来るので、サイズを取得することがよくあります。マップの長さも、リストと同じくsize()で取得することができます。
public class Main { public static void main(String[] args){ Map map1 = new HashMap(); System.out.println("map1の長さ(要素追加前);" + map1.size()); map1.put("one", 1); map1.put("two", 2); map1.put("three", 3); System.out.println("map1の長さ(要素追加後);" + map1.size()); }
実行結果
map1の長さ(要素追加後);3
【おすすめ記事】
➡人気No.1言語!Javaを学べるプログラミングスクール
➡一番人気の言語Javaを勉強できる学習サイト8選
➡Javaの本・参考書の評判
➡【Java入門】本の貸し借りで覚える引数と戻り値(return文)