JAVA関連のことを調べてみた2020年11月29日

JAVA関連のことを調べてみた2020年11月29日

Java 二次元配列

#はじめに
学習用のメモになります。

#二次元配列とは?
二次元配列とは、2つのインデックスで要素を指定する配列のことです。
#サンプルコード
“`Main.java
public class Main {
public static void main(String[] args) {
String[][] teams = {{“勇者”, “戦士”, “魔法使い”}, {“盗賊”, “忍者”, “商人”}, {“スライム”, “ドラゴン”, “魔王”}};

System.out.println(teams[0][0]);
//実行結果 :勇者

teams[0][0] = “剣士”;
// 勇者 → 剣士 に更新

System.out.println(teams[0][0]);
//実行結果:剣士

System.out.println(teams.length);
//実行結果:2
//配列の長さ

元記事を表示

【Java】Date ( 日付操作 )

## Date
Dateクラスは、「日付を管理しているクラス」です。


## 【使用場面】

上記のように Dateクラスは

– 簡単に日付と時刻を取得できる
– 日付の計算には不向き

以上のような特性のため、「*単純に時刻を表示したい時*」につかうといいとおもいます。

## 【書き方】
まず、Javaで日付を操作するときには以下を [インポート] する必要がありますので、こちらを[パッケージ]の下に記述してください。

“`java
// Dateのインポート
import java.util.Date;
“`
[インポート]しましたら、通常通り[インスタンス]化を行います。

“`java
// Dateのインスタンス化
Date date = new Date();
“`


## 【サンプルコード】 現在時刻を表示

こちらは単純に現在時刻を表示するプログラムです。

`System.out.println(インスタンス名);`で現在時刻を表示します。

元記事を表示

Javaのマルチスレッドについての学習

Java8でマルチスレッドとマルチプロセスの勉強をする。

# 1.はじめに

## 1-1.イメージ
マルチプロセスとマルチスレッドの簡単なイメージは以下になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187121/15cee7dc-05d1-0391-b096-935e9fe2fbe0.png)

マルチプロセスの場合は、メモリ空間が別になるので、データのやり取りにはプロセス間通信が必要になる。

逆にマルチスレッドでは、メモリ空間が同じなため、複数スレッドが同時に同じデータにアクセスして、「レースコンディション」のバグがでないように、排他制御を行い、「スレッドセーフ」にする必要がある。

## 1-2.準備

元記事を表示

【Java・SpringBoot】Spring JDBC でユーザー一覧画面(SpringBootアプリケーション実践編11)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して
Spring JDBCの使い方について学びます⭐️
今回はユーザーを登録(insert)した結果を確認できるように、**ユーザー一覧画面**を実装します!
構成は前回の記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC(SpringBootアプリケーション実践編9)](https://qiita.com/suema0331/items/23c8c7e9dec01b792a55)
[【Java・SpringBoot】Spring JDBC でユーザー登録(SpringBootアプリケーション実践編10)](https://qiita.com/suema0331/items/f07852225007570916c5)

#リポジトリークラス実装
###queryForObjectメソッドでObjectの取得
* 第1引数に**SQL文**、第2引数に**戻り値のオブジェクトのclass**を指定
* `int count = jdbc.qu

元記事を表示

Java 標準入力

#はじめに
学習用のメモになります。

#標準入力で1行データを読み込む

“`
//標準入力

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String data = sc.nextLine();
}
}
“`

#1行に複数要素がある場合
`split`メソッドで`,`区切りで要素を配列(array)に代入する

“`
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String data = sc.nextLine();

String[] array = data.split(“

元記事を表示

Java オブジェクト(Object Oriented Programming)とコンストラクタ、スコープ(local,global)

#1,オブジェクトとは
**Object is an instance of a class that may contain attributes and methods.**
車、人間、サイコロ、ピザのインスタンスを作りながら様々なルールを覚えていきましょう!

#2,ソースコード
>ルール1,mainメソッドとは別のファイルに記述する

mainクラスを記述しているクラスを**アプリケーションクラス**、それ以外を、**一般クラス**と言う。

“`java:Main.java
public class Main {

public static void main(String[] args) {

// Object Oriented Programming
// object = an instance of a class that may contain attribut

Java printf()メソッド

#1,printf() メソッドは、フォーマットに用いるメソッドです。
#2,ソースコード
“`java:Main.java
public class Main {

public static void main(String[] args) {

System.out.printf(“%d This is a format String “, 123);

boolean myBoolean = true;
char myChar = ‘@’;
String myString = “hiro”;
int myInt = 50;
double myDouble = 1000;

System.out.printf(“%b”, myBoolean);
System.out.printf(“%c”, myChar);
System.out.printf(“%s”, myString);
System.out.printf(“%d”, myInt);
System.out.printf(“%f”, myDouble);

System.o

Java メソッド(method)の作り方とオーバーロード

#1,Javaではクラスメソッドをオリジナルで作ることができます。
**※一つ一つルールをしっかり覚える必要があります。**
#2,ソースコード
>ルール1,static を必ずつける

“`java:Main.java
public class Main {

public static void main(String[] args) {

String name = “hiro”;
int age = 21;

hello(name, age);

int x = 3;
int y = 4;
int ans = add(x, y);
System.out.println(ans);

}

public static void hello(String name, int age) {
System.out.println(“Hello ” + name);
System.out.println(“You are ” + age + ” years old.”);
}

public

Java ArrayListクラス java.util.ArrayList

#1,ArrayListの作成方法
>➊ArrayList food = new ArrayList();

#2,ソースコード
>1次元配列

“`java:Main.java
import java.util.ArrayList;

public class Main {

public static void main(String[] args) {

ArrayList food = new ArrayList();

food.add(“pizza”);
food.add(“hambueger”);
food.add(“hotdog”);

food.set(0, “sushi”);
food.remove(2);
food.clear();

for (int i = 0; i < food.size(); i++) { System.out.println(food.get(i)); } } } ``` >2次元配列

“`java:Main.java

Java Wrapperクラス

#1,Wrapperクラスの紹介です。
Wrapperクラスは、プリミティブ型のデータを参照型と同じような扱いにできるクラスです。
これによって、参照型に含まれているメソッドが使えるようになります。

#2,ソースコード
“`java:Main.java
public class Main {

public static void main(String[] args) {

// primitive // Wrapper
// ——— // ——-
// boolean // Boolean
// char // Character
// int // Integer
// double // Double

Boolean a = true;
Character b = ‘@’;
Integer c = 123;
Double d = 3.14;
String e = “hiro”;

if (a == true) {
Sys

Java Stringクラス

#1、Stringクラスには、様々な便利機能があるのでその方法を紹介します。

#2,ソースコード

“`java:Main.java
public class Main {

public static void main(String[] args) {

String name = “hiro”;

boolean result = name.equals(“hiro”); // true
int result = name.length(); // 4
char result = name.charAt(2); // r
int result = name.indexOf(“h”); // 0
boolean result = name.isEmpty(); // false
String result = name.toUpperCase(); // HIRO
String result = name.toLowerCase(); // hiro
String result = name.trim(); // hiro
String

Java 乱数の生成 java.util.Random

#1,乱数の生成方法
>➊Random random = new Random();

>➋int x = random.nextInt(6) + 1; // int型

>➌double y = random.nextDouble(); // double型

>➍boolean z = random.nextBoolean(); // boolean型

#2,ソースコード

“`java:Main.java
import java.util.Random;

public class Main {

public static void main(String[] args) {

Random random = new Random();

int x = random.nextInt(6) + 1;
double y = random.nextDouble();
boolean z = random.nextBoolean();

System.out.println(x);
System.out.println(y);
System.out.

Java Mathクラス Math.sqrt

#1,平方根の作成方法
>➊Math.sqrt

#2,ソースコード

“`java:Main.java
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

double x;
double y;
double z;

Scanner scanner = new Scanner(System.in);

System.out.println(“Enter side x : “);
x = scanner.nextDouble();
System.out.println(“Enter side y : “);
y = scanner.nextDouble();

z = Math.sqrt((x * x) + (y * y));
System.out.println(“The hypotenuse is : ” + z);

scanner.close();

}

}
“`

#Java チュートリアル:cl

Java GUIからの入力 javax.swing.JOptionPane

#1,GUIからの入力の方法
>➊String name = JOptionPane.showInputDialog(“Enter your name”);

>➋int age = Integer.parseInt(JOptionPane.showInputDialog(“Enter your age”));

>➌double height = Double.parseDouble(JOptionPane.showInputDialog(“Enter your height”));

#2,ソースコード

“`java:Main.java
import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

String name = JOptionPane.showInputDialog(“Enter your name”);
JOptionPane.showMessageDialog(null, “hello” + name);

int a

Java モニターからの入力 java.util.Scanner

#1,モニターに入力した文字列や数値を出力する方法
>➊Scanner scanner = new Scanner();

>➋String name = scanner.nextLine(); // 文字列の入力

>➌int age = scanner.nextInt(); // 数値の入力

#2,ソースコード(モニターから入力して、モニターに出力)

“`java:Main.java
import java.util.Scanner;

class Main {
public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println(“What is your name?”);
String name = scanner.nextLine();

System.out.println(“How old are you?”);
int age = sc

Java ArrayListクラス 使い方

# はじめに
学習用のメモになります。

#ArrayListとは?
ArrayListは複数の要素を入れるための入れ物ようなもの

#ArrayListと配列の違い
* `配列`には格納できる要素の大きさが決まっています。その為、`あらかじめ決めた大きさ`を超える要素を格納すると、IndexOutOfBoundsExceptionエラーが発生します。
* `ArrayList`は要素数の大きさが決まっていません。要素数の上限値を気にせず、どんどん値を追加できます。

#ArrayListを使う

“`
import java.util.*;

public class Main {
public static void main(String[] args) {
ArrayList team = new ArrayList();

team.add(“勇者”);
team.add(“魔法使い”);
for (String member : team) {

[Java]StringBuilder、StringBuffer、プラス演算子、concat、joinによる文字列結合の処理速度比較

文字列を結合する方法は色々あるけど「StringBuilder」か「StringBuffer」が推奨されているみたいなので、「StringBuilder」と「StringBuffer」とそれ以外でどのくらい処理速度が違うのか比較してみた。
比較したのは「StringBuilder」「StringBuffer」「プラス演算子」「concat」「join」で、”1″から”10000″までを文字列結合したときの処理速度を比較してみた。

結果から見てみると、

|StringBuilder|StringBuffer|プラス演算子|concat|join|
|:–:|:–:|:–:|:–:|:–:|
|2ms|3ms|208ms|102ms|8ms|

となり、ほぼ予想通りでStringBuilderとStringBufferがダントツで早くプラス演算子とconcatが遅かったが、Listに詰める処理とか入ってるjoinが思いのほか早かった。
また、測定した各結合処理のコードは以下の通り。

“`java:StringBuilder.java
public static void

続・Servlet + Apache FOP で動的に PDF を作成して Web サイトに表示してみるサンプル (+Lombok)

[前回の投稿](https://qiita.com/yamachan360/items/c028911b3eab49d0a281) は [Apache FOP](https://xmlgraphics.apache.org/fop/) を用いて、JSP/Servlet サイトで PDF を動的に生成して表示するまでを試しました。日本語の表示がちょっと厄介でしたね。

Qiita 上でイイネ!(LGTM)はゼロなのですが、知り合いからは反応があったので、もうちょっと進めてみます。コードは [apache-fop-jp-sample リポジトリ](https://github.com/yamachan/apache-fop-jp-sample) にあります。

# 今回のネタ

さて、具体的には以下のような感じの拡張を試してみます。

* 入力値からデータ用 xml をダイレクトに生成してるけど、DB から取ってこれますか
* フォーマット指定がファイル読み込みだけど、これも DB から取ってこれますか
* サンプルがシンプルすぎるけど、説明レターとか請求書的なやつもちゃんと作れそうですか

Note Book : OpenCV v4.5.0-openvino Mask CNN by With Spring Boot

### Mask RCNN

####Final Result
![8829708882_48f263491e_z.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/732297/53a56d71-53cc-a617-7f4e-00a200edcbcc.jpeg)

####Mask
![8829708882_48f263491e_z.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/732297/00093541-f249-ffaf-afe7-f1c6d4baab7d.jpeg)

####Rectangle Mask
![8829708882_48f263491e_z.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/732297/917dbe76-524f-e009-5481-d743c036f48e.jpeg)
####log
2020-11

【Java】コレクションフレームワーク( set )

# 【Set】 重複要素のないコレクション

## Setとは

Setは、Listのと同様に 「**データをまとめたもの**」になります。
ですが、双方にはこのような違いがあります。

– Mapのようなキーと値の関連付けをしない
– インデックスが存在しない
– 同じ値のものは2つ以上持てない

SQL にある [「DISTINCT」や、「ORDER BY」 ](https://qiita.com/takahirocook/items/89aba8585dcd42dd310f)のようなイメージだと思います。

### Setの使い所
以上に書いた「 **同じ値のものは2つ以上持てない** 」などの特性をいかし、このような使い所が考えられます。

– 商品を安い順に並べる
– 会社の部署はいくつあるのか調べる
– ポケモンのタイプは何種類あるか調べる
– この学校の生徒はどこの出身者がいるかみる。

といったとき Set が役立つのではないかと思います。

## Setの種類
Setインタフェースを実装するものには、`HashSetクラス`, `TreeSetクラス`, `Link