気だるげ雑記帳

気になったことやメモしたいことを記事にしています

【Java】配列・リスト・マップの基本

Java言語の配列・リスト・マップの基本

初心者の私がメモとして使うために記述します。セットは気が向いたら追記します。

配列の生成

数の要素をまとめやすい。要素の値、要素数のどちらかを定義する必要がある。
要素番号は1からではなく0からとなる。


型 配列名[ ] = new 型 [要素数];

String hairetsu[] = new String [3];


型 配列名[ ] = {要素の値};

String hairetsu[] = {"Ayunem0", "Java1", "Study2"};


多次元配列と呼ばれる配列も存在しますが、嫌いなので私は使いません。

型 配列名[ ][ ] = new 型[縦要素数] [横要素数];

int tajigen[][] = new int[3][5]; // 縦3横5の計15個の箱を用意できます

 

配列の取り出しなど

String suuzi[] = {"ゼロ", "わん", "リャン"};

String box = suuzi[0]; // 要素番号0、"ゼロ"が変数boxに代入される

System.out.print( suuzi.length ); // 配列名.lengthで要素数がわかる
for(int i = 0; i < suuzi.length; i++){
System.out.println( suuzi[i] );{ // for文で全ての要素の値を出力する

リストの生成

列の上位互換。配列に比べ、要素の追加と削除が容易的
Listは参照型のみ保持出来る。int等はラッパークラスのIntegerを使う必要あり。
要素番号の重複は禁止だが、要素の値の重複は問題なし。


List <型> リスト名 = new ArrayList <型※省略可> (引数);
List <型> リスト名 = new LinkedList <型※省略可>(引数);

import java.util.List; // 親インターフェースList
import java.util.ArrayList; // ArrayListクラス
import java.util.LinkedList; // LinkedListクラス

List <String> arrayList = new ArrayList <String>();
List <Integer> linkedList = new LinkedList <Integer>();

 

両方親がListインターフェースなのでほとんど同じものだと言えます。両方それぞれ...



ArrayList

  • 配列と同じように1番、2番とインデックスを具えている
  • 要素の挿入と削除の処理が苦手で遅い
  • 指定要素の取得が高速 arrayList.get(要素番号);

LinkedList

  • 連結リストの為、~の前、後といった捉え方か
  • 要素の挿入と削除の処理が得意で高速
  • 指定要素の取得は基本的に向いていない


リストの要素取り出しには拡張for文が便利です。

for ( 型 変数名 : 取り出し元 )

import java.util.ArrayList;

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

list.add("C++");
list.add("Java"); // addメソッドを用いることでリストに要素を追加する
list.add("C#");

for(String language : alist){ // 拡張for文(for-each)

System.out.println(language); // addで追加した要素をそれぞれ取り出す
}

 

リストのメソッド

戻り値メソッド意味
boolean add(要素) リストの最後に指定された要素を追加
void add(int 要素番号, 要素) 指定した要素番号に要素を挿入
- get(int 要素番号) 指定した要素番号に位置する要素を取得
- set(int 要素番号, 要素) 指定した要素番号に格納されている要素を引数の要素で上書き
- remove(要素番号 or 要素) 引数に一致するものを削除する
void clear() リストに格納されている要素全てを削除
int size() lengthのリスト版。リストの要素数を調べる
int indexOf(要素) 引数の要素がリストの何番目にあるのかを調べる
boolean isEmpty() リストの要素が0の場合にtrue
boolean contains(要素) 引数の要素がリストにある場合にtrue

マップの生成

列やリストと異なり、KeyとValueからなるコレクションで3種類ある。
Keyは従来の要素番号の事でValueは要素の値の事。Keyの重複禁止。
ジェネリクス<>はそれぞれ1がKeyの型、2がValueの型を指定する必要があります。



Map <型1, 型2> マップ名 = new HashMap <型1, 型2>(引数);
Map <型1, 型2> マップ名 = new LinkedHashMap <型1, 型2>(引数);
Map <型1, 型2> マップ名 = new TreeMap <型1, 型2>(引数);

// 独自...独自クラス、各々で作成したクラスを今回指しています
import java.util.Map;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;

Map <Integer, String> hashMap = new HashMap <Integer, String>();
Map <String, 独自> m = new LinkedHashMap <String, 独自>();
Map <String, Integer> treE= new TreeMap <String, Integer>();

Map <独自, List<String>> a = new HashMap <>(); // MapのValueにList可能


それぞれMapの違いは取り出し順序だろうか...

  • HashMapは格納した順番に関わらずランダムで取り出される
  • LinkedHashMapは基本的に格納した順番に取り出される
  • TreeMapはキーによって要素が自動的にソートされる


ちなみに

 

マップのメソッド

戻り値メソッド意味
Value put(Key, Value) 引数をマップで関連付ける
Value get(Key) 引数のKeyに関連付けられているValueを返す
Value remove(Key) 引数のKeyがマップに存在する場合削除する
void clear() マップからマッピングを全て削除する
int size() マップに存在するマッピングの数を調べる
boolean isEmpty() マップがKeyとValueマッピングを保持しない場合にtrue

 




Javaの参考書


スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかるJava入門 第2版 (スッキリシリーズ)



つもの。言わずと知れたベストセラー。
勇者といったRPG要素を含み、初学者でもオブジェクト指向を理解しやすい一冊。
基本構文から配列、メソッドや例外について一通り学べる。



スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)



門編に物足りなさを感じたなら。
私は初読の際、上記の入門編とは違い、急に難易度が跳ね上がる印象を感じました。
リスト等だけでなく、ファイル操作・ネットワーク通信の基本操作を学習できます。
基本情報でJava受験予定、自身のスキルアップを目的とするならオススメします。



初級Java―やさしいJava

初級Java―やさしいJava



的処理メインの初学者向け参考書。
まずは統合開発環境Eclipseの準備から始まります。上記の2冊とは異なりますね。
著者が独自に用意したライブラリを用いて最後まで進めます。
図形の動的処理を基本とし、ミニゲームを作成しながら自然と学習出来ます。