このページは「JAVAのArrayList」の演習問題です。「JAVAのArrayList」の基礎を学びたい方はこちらで参考してください。
JAVAのArrayList
この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく使われています。この記事はArrayListの宣言と初期化・要素の格納・追加・取得・取消などを紹介し、for文やイテレータなどを用いた「要素を順に取り出す4つの方法」も紹介します。それに、indexOf,contains,subListなどのメソッドの使い方を詳しく説明します。
1. 最大の要素を検索する
問題:ArrayListを宣言し、要素をキーボードから入力する。ArrayListの中に最大の要素を検索する
package helloworld;
import java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
ArrayList< Integer > arrListInteger = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
int number; // リストの要素数
System.out.print("ArrayListの要素数を入力する: ");
int n = scanner.nextInt();
//for文でArrayListの要素を入力する:
for (int i = 0; i < n; i++) {
System.out.print(i +"番目の要素:");
number = scanner.nextInt();
arrListInteger.add(number);
}
// リストの最大値を求める
//デフォルトとしてリストの最初の要素を最大値にする
int max = arrListInteger.get(0);
for (int i = 1; i < arrListInteger.size(); i++) {
// i番目の要素はmaxより大きければ、maxをi番目の要素に更新する
if (arrListInteger.get(i) > max) {
max = arrListInteger.get(i);
}
}
System.out.println("リストの最大値 = " + max);
}
}ArrayListの要素数を入力する: 5 0番目の要素:3 1番目の要素:6 2番目の要素:1 3番目の要素:2 4番目の要素:4 リストの最大値 = 6
2. 要素が重複でないリストを作る
問題:元のリストの要素を新リストにコピーする。ただし、新リストの要素が重複しないようにする
ヒント : 要素が重複するかはcontainsメソッドで確認する。 containsで要素の有無を確認するについて詳しく見たい方:
| containsで要素の有無を確認する ../../../java/java-collection-arraylist.html?goto=5to3 この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・ |
package helloworld;
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
//ArrayListを宣言する
ArrayList< Integer > arrListInteger = new ArrayList<>();
//ArrayListに要素を入れる
arrListInteger.add(1);
arrListInteger.add(2);
arrListInteger.add(2);
arrListInteger.add(3);
arrListInteger.add(4);
arrListInteger.add(4);
arrListInteger.add(5);
arrListInteger.add(1);
//新ArrayListを作成する、要素型は元のArrayListと一緒である。
ArrayList< Integer > arrNewList = new ArrayList<>();
//arrListIntegerの要素を順番に読み出し、
//その要素はarrNewListにあったかcontainsメソッドで確認する
//まだ無ければ、arrNewListに入れる
for (int str : arrListInteger) {
if (!arrNewList.contains(str)) {
arrNewList.add(str);
}
}
System.out.print("arrListIntegerの全要素: ");
System.out.println(arrListInteger);
System.out.print("arrNewListの全要素: ");
System.out.println(arrNewList);
}
}arrListIntegerの全要素: [1, 2, 2, 3, 4, 4, 5, 1] arrNewListの全要素: [1, 2, 3, 4, 5]
3. 要素が重複しないようにリストを整理する
問題:リストを宣言し、初期化する。重複している要素を1つだけに消し残す
条件 : 新しいリストを作成しないこと。ヒント : リストの中に、1つの要素値に対して、その要素値と等しい要素のインデックス番号をindexOfメソットとlastIndexOfメソッドで求まった結果が違えけば、その要素らは重複している、一致していれば、重複しないとわかります。 indexOfで要素の位置を検索するについて詳しく見たい方:
| indexOfで要素の位置を検索する ../../../java/java-collection-arraylist.html?goto=5to2 この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・ |
package helloworld;
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
//ArrayListを宣言する
ArrayList< Integer > arrListInteger = new ArrayList<>();
//ArrayListに要素を入れる
arrListInteger.add(2);
arrListInteger.add(1);
arrListInteger.add(2);
arrListInteger.add(3);
arrListInteger.add(4);
arrListInteger.add(4);
arrListInteger.add(5);
arrListInteger.add(1);
System.out.print("arrListIntegerの全要素: ");
System.out.println(arrListInteger);
int i = 0;
while(i < arrListInteger.size()){
if(arrListInteger.indexOf(arrListInteger.get(i)) != arrListInteger.lastIndexOf(arrListInteger.get(i))){
arrListInteger.remove(arrListInteger.lastIndexOf(arrListInteger.get(i)));
}else{
i++;
}
}
System.out.print("要素が重複でないarrListIntegerの全要素: ");
System.out.println(arrListInteger);
}
}arrListIntegerの全要素: [2, 1, 2, 3, 4, 4, 5, 1] 要素が重複でないarrListIntegerの全要素: [2, 1, 3, 4, 5]
4. 全要素の和を求める
問題:リストを宣言し、初期化する。for文でリストの全要素の和を計算する
package helloworld;
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
//ArrayListを宣言する
ArrayList< Integer > arrListInteger = new ArrayList<>();
//ArrayListに要素を入れる
arrListInteger.add(1);
arrListInteger.add(2);
arrListInteger.add(3);
arrListInteger.add(4);
arrListInteger.add(5);
System.out.print("arrListIntegerの全要素: ");
System.out.println(arrListInteger);
// リストの全要素の和を求0める
int sum = 0;
for (int i = 0; i < arrListInteger.size(); i++) {
sum += arrListInteger.get(i);
}
System.out.println("リストの全要素の和 = " + sum);
}
}arrListIntegerの全要素: [1, 2, 3, 4, 5] リストの全要素の和 = 15
5. リストのソートをする
問題:リストを宣言し、初期化する。リストを昇順にソートする
条件 : Collections.sortを利用する方法と二重for文を使う方法をどちらも再現します 配列のソートについて詳しく見たい方:
| 配列のソート ../../../java/java-array-exercises.html?goto=2 配列とは、同じ型の複数の値をまとめて一つの変数として扱うことができるデータ構造です。この記事では配列の宣言、初期化、追加などの基本操・・・ |
package helloworld;
import java.util.ArrayList;
import java.util.Collections;
public class HelloWorld {
public static void main(String[] args) {
//ArrayListを宣言する
ArrayList< Integer > arrayListInteger = new ArrayList<>();
//ArrayListに要素を入れる
arrayListInteger.add(2);
arrayListInteger.add(1);
arrayListInteger.add(2);
arrayListInteger.add(3);
arrayListInteger.add(4);
arrayListInteger.add(4);
arrayListInteger.add(5);
arrayListInteger.add(1);
System.out.print("元のarrayListIntegerの全要素: ");
System.out.println(arrayListInteger);
//for文を使う場合に元のリストを新しいリストにコピーする
ArrayList< Integer > arrayListIntegers2 = new ArrayList<>();
arrayListIntegers2 = arrayListInteger;
//Collections.sort()メソッドでソートする
Collections.sort(arrayListInteger);
System.out.println("Collections.sort()メソッドでソート:" + arrayListInteger);
//二重for文でリストをソートする
for(int i=0; i < arrayListIntegers2.size() - 1;i++){
for(int j=i+1; j < arrayListIntegers2.size();j++){
if(arrayListIntegers2.get(i) > arrayListIntegers2.get(j)){
int x=arrayListIntegers2.get(i);
arrayListIntegers2.set(i, arrayListIntegers2.get(j));
arrayListIntegers2.set(j, x);
}
}
}
System.out.println("二重for文ででソート:" + arrayListIntegers2 );
}
}元のarrayListIntegerの全要素: [2, 1, 2, 3, 4, 4, 5, 1] Collections.sort()メソッドでソート:[1, 1, 2, 2, 3, 4, 4, 5] 二重for文ででソート:[1, 1, 2, 2, 3, 4, 4, 5]