JAVA関連のことを調べてみた2021年01月23日

JAVA関連のことを調べてみた2021年01月23日

Mapについて【Java】

#目次
* [特徴](https://qiita.com/drafts#%E7%89%B9%E5%BE%B4)
* [初期化① put(key, value)](https://qiita.com/drafts#%E5%88%9D%E6%9C%9F%E5%8C%96-putkey-value)
* [初期化② put(key, value)](https://qiita.com/drafts#%E5%88%9D%E6%9C%9F%E5%8C%96-putkey-value-1)
* [要素数を返す size()](https://qiita.com/drafts#%E8%A6%81%E7%B4%A0%E6%95%B0%E3%82%92%E8%BF%94%E3%81%99-size)
* [キーを指定して値を取得する get(key)](https://qiita.com/drafts#%E3%82%AD%E3%83%BC%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3

元記事を表示

SonarQube(Java)の、ルールの出典を確認したい

# Whats’?

SonarQubeで使えるJavaのルールって、SonarQube自身が提供しているのか、それとも他のOSSなどのルールを使っているのか知りたいなぁと思いまして。

# 結論

すべて、SonarQube自前のルールでした。

SpotBugs、FindSecBugs、PMD、Checkstyleで検出した問題については、インポートが可能だということです。

[Importing Third-Party Issues](https://docs.sonarqube.org/latest/analysis/external-issues/)

> SonarQube doesn’t run your external analyzers or generate reports. It only imports pre-generated reports.

[Importing SpotBugs, FindSecBugs, PMD, Checkstyle Issues Reports(※このページはもうメンテナンスされていません)](https://docs.so

元記事を表示

初心者が1から始めるJava開発-Vol.5- 繰り返し編

前回に引き続き今回はJavaの繰り返しについて書いていこうと思います。

前回の[Vol.4](https://qiita.com/soepy/items/cfaa9927042bdd36fcf7)も重要なので、初心者は要チェックです。

———————————
**Javaの初心者向けおすすめ本**
初心者が1から始めるJava開発-Vol.4- 条件分岐編

プログラムには大きく3要素あると思っていて

– 順次実行(順次)
– 条件分岐(分岐)
– 繰り返し(反復)

です。

このうち順次というのは読んで字のごとく、「順番に処理を実行する」という意味で、
Javaでは、上に書いたものから先に実行されるという一般的なルールに従います。

当然、Vol.3で紹介したメソッドやクラスは呼び出された順に実行するので、
クラス内に書かれている順ではなく、呼び出された順です。

今回は2つ目の条件分岐について紹介していきます。

———————————
**Javaの初心者向けおすすめ本**
MavenプロジェクトでSonarQubeを使ってみる

# What’s?

こちらのエントリでSonarQubeサーバーのインストール方法はわかったので、今後はSonarQubeを動かしてみましょう。

[CentOS 8にSonarQubeサーバーをインストールする](https://qiita.com/charon/items/b5e54fab02dd9aae9525)

Java(Maven)なプロジェクトで、SonarQubeのソースコード解析を動かしてみます。

# 環境

SonarQubeサーバーのバージョンは`8.6.0.39681`、SonarQubeサーバーが稼働しているサーバーのIPアドレスは`192.168.33.10`とします。

JavaやMavenのバージョンはこちら。

“`shell
$ java –version
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubun

【Android / Java】双方向 DataBinding + Clickイベント / サンプルアプリ実装

# はじめに
実務案件で DataBinding を利用している。
なかなか難しい。そこで双方向 DataBinding を用いたサンプルアプリを作成しながら DataBinding について学んだ。

※ 今回は Java ですが、 Kotlin でも同様のものを作成してみようと思っております。その時は改めて投稿します。

### サンプルアプリの概要
こんな感じのもの↓↓
無茶苦茶画質悪くてすみません。

実装していることとしては

– フォーム入力時
– 入力されたテキストをフォーム下部にリアルタイムで表示
– ボタンアクティブにする(テキストの有無で切り替え)
– ボタンクリック時
– フォーム入力テキストを上部に表示
– フォームおよび下部のテキストを空欄に戻す(初期化する)

### 開発環境

元記事を表示

Java シリアルツール性能比較

# Java シリアルツール性能比較

本ページでは主にjavaのシリアルツールの性能比較を記載します。
コードと結果の部分があります。

###使用されたのdependency

– Java原生方法
– XStream方式
– FastJson方式
– Hessian方式

### シリアルされたデータ

“`java
@Data
public class User implements Serializable {
private static final long serialVersionUID = -2564324657866843L;
private String name;
private int age;

private void writeObject(java.io.ObjectOutputStream s) throws IOException {
s.defaultWriteObject();
s.writeObject(name);
}

private void read

元記事を表示

Java リフレクションでメソッド実行

Javaでリフレクションを実行した際の備忘録
最後尾にサンプルソースを記載している

◆文字列をクラスオブジェクトに変換する
> // 文字列をクラスオブジェクトに変換する
String strClass = “imamu.reflect.Called”;
Class c = Class.forName(strClass);

◆クラス名とメソッドの取得方法
> // クラス名の取得
System.out.println(“Class name: ” + c.getName());
// メソッドの取得
for (Method m : c.getMethods()) {
boolean isFirstParam = true;
System.out.print(” ” + m.getName() + “(“);
for (Class p : m.getParameterTypes()) {
if (!isFirstParam) {
System.out.pr

元記事を表示

Java基礎 シリアライズとは

前回、ファイルオブジェクトを生成し文字を書き込んだり読み込んだりする処理を書きました。
今回は、プログラマーが作ったクラスで生成したオブジェクトを入出力する方法について書きたいと思います。

##シリアライズ
生成したインスタンスをバイト列に変換したり(**シリアライズ**)、またそのバイト列をインスタンスに戻したり(**デシリアライズ**)する仕組みです。
この仕組みによって、入出力ストリームを使用してファイルに保存したりネットワークで伝送したりできます。
シリアライズは直列化とも呼ばれます。

##オブジェクトをシリアライズ可能にする
通常のクラスをシリアライズ可能にするには、**java.io.Serializableインターフェース**を実装する必要があります。このインターフェースはマーカーインターフェースのため、オーバーライドすべきメソッドは持ちません。

下のプログラムは、PersonクラスがSerializableインターフェースを実装し、シリアライズ可能なオブジェクトにしています。

“`java:Person.java
import java.io.*;

clas

元記事を表示

Java の UUID は素晴らしい!

ユニークのキーを生成したいと思って、この記事を見つけました。

https://qiita.com/kawasima/items/6b0f47a60c9cb5ffb5c4

まさにこの記事の通りです。素晴らしい。

結論から言うと、UUID version4 が良さそうです。
UUID 以前から知ってましたが、バージョンまであるのは知りませんでした。

じゅあ、どうやってバージョンを調べるの?と調べたら、この記事

http://xawa99.blogspot.com/2013/07/UUID-Version.html

xxxxxxxx-xxxx-Vxxx-xxxx-xxxxxxxxxxxx
なるほど!

Java 8 で検証してみました。

“`java
import java.util.UUID;

public class App {
public static void main(String[] args) {
for (int i = 0; i < 10; i++

元記事を表示

【Spring】@SessionAttributesでセッションオブジェクトでオブジェクトを持ち回りたいのに・・・

###No primary or single public constructor found for interface java.util.List
このエラーに5時間位かかりましたね。意味わからんかったー
結局セッションオブジェクトの扱い方がわかっていなくて、コントローラーのメソッドの引数に@ModelAttributeなしで`List ListInt,`みたいに渡してて、これがアカン買ったようです。

###大まかなイメージ
1. セッションに置きたい名前を準備
2. その名前にオブジェクトを結びつける
3. model.addAttributeでセッションに保存する
4. メソッドの引数に@ModelAttributeをつけてセッションから取得

###実装する場所
####コントローラーの上に

“`java
@SessionAttributes( value=”〇〇”)
“`
`〇〇`にはオブジェクトの名前(属性名)

####コントローラーの中の一番上に@ModelAttributeでオブジェクトを準備

“`java

@ModelAtt

元記事を表示

KotlinでMapとListをfor文で操作しよう!

### Key:Valueが1:1のMapをListにする

“`Kotlin:
// 1:1
val map = mapOf(“key1” to “val1”, “key2” to “val2”, “key3” to “val3”)
// mapのすべてのvalueが格納される
val valueList = ArrayList(map.values)
var list: MutableList
list = ArrayList()
list.addAll(valueList)
“`
### 1:1のMapを条件分岐でListに格納する

“`Kotlin:
val map = mapOf(“key1” to “val1”, “key2” to “val2”, “key3” to “val3”)
val valueList = ArrayList(map.values)

// key1のvalueがarray変数に格納される(“val1”)
var araay = map.get(“key1”).toString(

元記事を表示

Java メモ

列挙で比較する時など

“`
Arrays.asList({A,B,C}).contains
“`
を使う

“`
Optional.isPresent()
“`
はなるべく使わず
“`
Optional.map ~ orElse orElseThrow“`
する

元記事を表示

初心者が1から始めるJava開発-Vol.3- クラス、メソッド編

今回はJavaの最も重要な概念であるクラス、メソッドについて説明していきます。

私もまだまだプログラマーとしては発展途上で、こういう概念の話は言語化がむずい。
分かりにくい概念の話が多いですが、実装を経て「あーそういう事か」と分かればOKです。

もちろん、Hands On形式で実際にコードも書いていきますよ!

———————————
**Javaの初心者向けおすすめ本**
~今さらながらJavaで関数型プログラミングを学習してみた~(第2部)

「関数型プログラミングとJava8での取り組みと追加API説明」を中心テーマとした第1部はすでに投稿されています。
 [第1部へのリンク](https://qiita.com/greencycle/items/d864a56da30b3861fb4b)

##はじめに##
第1部では関数型プログラミング自体の概説と、Java8で新たに取り入れられたAPI+そのサンプルを中心に紹介しました。
本第2部では「実際Javaシステム開発においてどの程度関数型プログラミングを取り込むべきなのか?」を中心テーマとして少し現実的なサンプルも交えて検討していきたいと思います。
あわせて関数型プログラミングの説明でよく用いられている「パイプライン、高階関数、カリー化」という用語についてもJavaベースでの説明を行っていきます。
なお、内容には主観にもとづく部分や、個人的指向が入ったプログラムスタイルになっている場合がありますので了承お願い致します。
関数プログラミング特有の語句については第1部の後尾部分に理解した範囲での簡単な説明を記述していますので参考にして下さい。

##関数型プログラミングにおける

元記事を表示

Java Silver SE11 継承とオーバーライドの間違えやすい部分

Java Silver SE11の問題を解いていて継承とオーバーライドに関する問題を間違えるので備忘録として残す。

大事なのは何の型で宣言されて、何のインスタンスを生成しているか。
メソッドはどのようなアクセス修飾子が付与されているか。

“`
public class Main {
public static void main(String[] args) throws Exception {
//case A
Super superClass = new Sub();

//case B
// Super superClass = new Super();

Sub subClass = new Sub();

//code 1
// subClass = superClass;

//code 2
// subClass = (Sub)superClass;

元記事を表示

DynamoDB Enhanced Client にて、なぜかインデックステーブルに対してアクセスしてしまう

# エラー内容
エラー文は以下の通り。

“`java
java.lang.IllegalArgumentException: A sort key value was supplied for an index that does not support one. Index: $PRIMARY_INDEX
“`
# 結論
属性に対するゲッター・セッターの定義がおかしい。(敗北N回目、、、)

# 対処
適切なゲッター・セッターを設定しましょう。
具体的には以下の2点をチェック。

– メソッド名
– 引数の型

# 発生状況
筆者の場合は以下のような形で発生しました。

“`java
@DynamoDbBean
@Setter
public class Foo {

private String name;
private String date;

@DynamoDbAttribute(“name”)
public String getName() {
return name;
}

@DynamoDbAttribute(“date”)

元記事を表示

Selenium DOM要素をホバー&クリックする方法

## Seleniumを使用してDOM要素をホバーしてからクリックする方法について明記します。

SeleniumはWebサイトやWebページの閲覧を自動化することができます。
今回は、抽出したDOM要素をホバーしてからクリックする方法について明記します。
要素をホバーすることでプログラム上、`マウスカーソルがDOM要素に重なっている状態`を表現します。

“`qiita:Java
import org.openqa.selenium.interactions.Actions;

public static void autoHoverClick(WebDriver driver, WebElement element){
Actions act = new Actions(driver);
act.moveToElement(element).perform(); // 指定したDOM要素をホバーする(hover)
element.click(); // DOM要素をクリック
}

“`

元記事を表示

たったこれだけ!チーム開発でコードフォーマット忘れを防ぐ方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122958/37d8e44e-07cb-355a-809b-25bf16a3b198.png)

# はじめに

**「コードフォーマットが適用されておりません。」**
こんな指摘をした人、された人。いるのではないでしょうか?
今回はコードフォーマットを**CIツール**で実行し、開発者はフォーマッターの実行をしないような仕組みを紹介します。

# この記事を書こうと思った動機

**お客様指定のコードスタイルのある規約があるプロダクト**において以下の問題に直面し、結果的に工数が増大したため。

:star: **ケース1. ローカルで「コードフォーマッター」が適用されずにPull Requestを出すケース**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122958/4e6534c9-9f34-1a71-6865-0ddd34e1b0

元記事を表示

Javaでディープラーニングを実装してみた

ディープラーニングをスクラッチから実装して理解するアプローチの書籍としては、『[ゼロから作るDeeplearning](https://www.oreilly.co.jp/books/9784873117584/)』が有名ですが、同じ趣旨の『[ディープラーニングの数学](https://www.nikkeibp.co.jp/atclpubmkt/book/19/273470/)』という書籍がとても分かりやすかったので、[Pythonのコード](https://github.com/makaishi2/math_dl_book_info)を[Javaで実装](https://github.com/kinmojr/math_deeplearning_java)してみました。

Javaは機械学習不毛地帯(というかデータサイエンス領域がPythonの独壇場?)ですが、Javaで機械学習のロジックを理解したいという奇特な方がいれば参考にしてください。

オリジナルと同様にできる限りライブラリを使わず、スクラッチで実装しました。
(実行速度の問題で行列やベクトルの演算部分はcommons mat

元記事を表示

OTHERカテゴリの最新記事