[Java]Paizaでよく使うコード集

## 著者
Javaを用いてPaizaを解き始めた駆け出しエンジニアです。
元々はJavaScriptを用いてBランク程度の問題を解いていたのですが、業務でJavaを使用することになったので、学習のアウトプットとしてPaizaを活用しています。（有料会員）

JavaScriptで問題を解く時と比べてJavaだと文字列→数値の変換や、配列の扱い方、定義の仕方など、暗記しづらいがよく使うコードがたくさんあるなと感じました。

そこで、自分のアウトプット兼備忘録のために、Paizaでよく出てくるコードを載せました。
（Paizaでは、解答を転載することは禁止されているので、解答自体を載せることはしません。あくまでメソッドや定義の解説になります。）


```java:int型で入力値を保存
        int n = sc.nextInt();
        int m = sc.nextInt();
```

```java:数値を文字列変換
int num = 10;

String str = String.valueOf(num);
```

```java:文字列を数値変換
String str = "24";

int num = Integer.parseInt(str);
```

```java:listを作成し、中身に入力値を代入
        List<Integer> a = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextInt());
        }
```

```java:配列を作り、文字を格納
String[] s = new String[n];
        for (int i = 0; i < n; i++) {
            s[i] = sc.next();
        }
```

```java:配列を出力
System.out.println(Arrays.toString(arr1)); //配列
System.out.println(Arrays.deepToString(array)); //多重配列
```

```java:配列の最大値と最小値を出力
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }

        Arrays.sort(a);

        System.out.println(a[n - 1] + " " + a[0]);
```

```java:配列のn番目の文字を抜き出す
public class StrCharAt {
	public static void main(String[] args) {
		String str = "こんにちは";
		System.out.println(str.charAt(3)); //ち
	}
}
```

```java:配列やlistの中身の取り出し
        for (int x : a) {
            System.out.println(x);
        }
```

```java:listの要素数の取得
list.size();
```

```java:listをソートする
// 昇順
Collections.sort(リスト名);

// 降順
Collections.sort(リスト名,  Collections.reverseOrder());
```

```java:配列のソート
Arrays.sort(配列名);

Arrays.sort(配列名,  Collections.reverseOrder());
```

```java:listの配列のインデックスの順番を逆にする
Collections.reverse(a);
```

```java:listの要素を削除
array.remove(array.indexOf("さむらい"));
```

```java:listの重複を削除して昇順にした配列を新たに作成
        List<Integer> li = Arrays.asList(1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4);
        Set<Integer> a = new TreeSet(li);
```

```java:配列の中身の平均値を出す
        int sum = 0;
        for (int x : a) {
            sum += x;
        }
        double ave = (double) sum / n;
```


```java:二重配列の作成例
int[][] a new int[n][5];
for (int i = 0; i < n; i++) {
	for (int j = 0; j < 5; j++) {
		a[i][j] = sc.nextInt();
	}
}
```


```java:二重配列で差を出力
for (int i = 0; i < n; i++){
	for (int j = i + 1; j < n; j++){
		if(Math.abs(a[i] - a[j]) < diff) {
			diff = Math.abs(a[i] - a[j]);
			if(a[i] < a[j]) {
				taller = a[j];
				shorter = a[i];
			} else {

				}
		}
	}
}
```

```java:ハッシュマップ例
Map<Integer, String> map = new HashMap<>();
map.put(10, "Ten");
map.put(100, "Hundred");
map.put(1000, "Thousand");
System.out.println(map);

// {100=Hundred, 1000=Thousand, 10=Ten}
```

```java:1行ずつ出力
public class SimpleTesting{
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(10, "Ten");
		map.put(100, "Hundred");
		map.put(1000, "Thousand");
		for (Integer key: map.keySet()){  
			System.out.println(key+ " = " + map.get(key));
		} 
	}
}

// 100 = Hundred
// in1000 = Thousand
// 10 = Ten
```

```java:mapに対して、keySetメソッドを使用して、キー値を取得
import java.util.*;
 
public class Main {
    public static void main(String[] args) throws Exception {
        
        // Mapの宣言
        Map<Integer, String> mMap1 = new HashMap<Integer, String>();
        
        // Mapにデータを格納
        mMap1.put( 1, "apple");
        mMap1.put( 2, "orange");
        mMap1.put( 3, "melon");
        
        // keySetを使用して、キーを取得する
        Set<Integer> MapSet = mMap1.keySet();
        
        // Setインタフェースの変数MapSetの値を確認
        for (Iterator<Integer> n = MapSet.iterator(); n.hasNext();)
        {
            System.out.println(n.next());
        }
    }
}

// 1
// 2
// 3
```

keySetメソッドを使用すれば、**putメソッドで追加したMapのset値が返却**
されます。keySetメソッドで取得したMapSetの中身をループで確認すると、Mapのキー値が取得できていることがわかります。

```java:ハッシュマップの値をkeyListにしてソートして出力
ArrayList<Integer> keyList = new ArrayList<>(ab.keySet());
        Collections.sort(keyList);

        for (Integer x : keyList) {
            System.out.println(x + " " + bc.get(ab.get(x)));
        }
```

よくググってしまうのは、listと配列のメソッドですね。
いまだになぜlistと配列というものがあるのか不思議です。（JSだと配列のみ使うので）

Javaは難しいので根気良く学習していきます。

まさかりなどコメントをバンバン募集しています。
私も、この記事を見た人も勉強になるので、間違い等ありましたら指摘のほどよろしくお願いします。

Twitter

https://twitter.com/js_manabitai