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

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

Javaでファイルやディレクトリのタイムスタンプを変更したい。

Javaでファイルやディレクトリのタイムスタンプを変更したい場合`Files.setLastModifiedTime`を利用すると便利です。たとえば指定のファイルのタイムスタンプを現在時刻にしたい場合は以下のようなコードになります。

“`java
FileTime now = FileTime.from(Instant.now());
Path file = Paths.get(“/path/to/file”);
Files.setLastModifiedTime(file, now);
“`

`Files.setLastModifiedTime`の第2引数には時刻を指定します。Javaで時間や日付というと`Date`や`Calendar`や`LocalDateTime`あたりをよく利用しますが、ここでは`FileTime`というあまりなじみのないものを利用することに注意する必要があります。

__環境情報__

“`
$ java -version
openjdk version “11.0.3” 2019-04-16
OpenJDK Runtime Environment

元記事を表示

【Java】MapをListに変換する方法

#はじめに

本記事ではMapをListに変換する2通りの方法をアウトプットします。

#Listを直接生成する方法

“`java
Map TopBillionaires = new LinkedHashMap<>();
TopBillionaires.put(“$195bn”, “Elon Musk”);
TopBillionaires.put(“$185bn”, “Jeff Bezos”);
TopBillionaires.put(“$134bn”, “Bill Gates”);
TopBillionaires.put(“$102bn”, “Mark Zuckerberg”);
TopBillionaires.put(“$88.2bn”, “Warren Buffett”);
TopBillionaires.put(“$81bn”, “Sergey Brin”);

List keyList = new ArrayList<>(TopBillionaires.keySet());
List

元記事を表示

AutoCompleteTextViewにフォーカスを当てたままキーボードを非表示にする

## AutoCompleteTextViewとは

キーボードによるインプットに対して、自動で文字を補完してくれる機能を備えもったEditTextのことです。

通常、Googleの[マテリアルデザインガイドライン](https://material.io/develop/android/components/menu)に則ったドロップダウンメニューを作成する場合は以下のような実装をします。

***res/layout/dropdown_menu.xml***

“`xml
Javaでビンゴマシーン作ってみた

目的

 本記事の目的はビンゴマシーンの作成です。
数の出る規則性はJava.util.Randomをそのまま使います。
しかし、これだけでは同じ数が数回表示されてしまうのでそういった点を工夫しました。

下記にソースコードがあります。
https://github.com/T1210Taichi/BingoMachine.git

元記事を表示

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。

(この記事は [地平線に行く](https://yujisoftware.hatenablog.com/entry/2021/02/12/225501) とのマルチポストです)

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。
https://github.com/YujiSoftware/JDK1.0

なんと、Windows 10 上でも動きます。
あと、[src.zip も展開して置いた](https://github.com/YujiSoftware/JDK1.0/tree/master/src) ので、GitHub 上で読めます。

Java 考古学者のみなさま、ぜひご活用ください!

# 入手の経緯

前々から Java 1.0 を触ってみたいなーと思っていたのですが、Oracle の [Java Archive](https://www.oracle.com/jp/java/technologies/oracle-java-archive-downloads.html) にはなぜか Java 1.1 以降しか置いてありませんで

元記事を表示

JAVAの条件分岐についてまとめてみた

#JAVAの条件分岐についてまとめてみた
今回はJAVAの条件分岐についてまとめてみました。
##1.IF文
“`if..文
if(条件式){
 実行処理
}
“`
一番シンプルなやつです!
条件式に「num > 1」みたいな式を書いて、「true」だったら処理を実行します。

“`if..else文
if(条件式){
 実行処理1
}else{
実行処理2
}
“`
elseが増えましたね。
条件式が「false」だった場合は、実行処理2の方が実行されます。

“`if..else.if文
if(条件式){
 実行処理1
}else if(条件式2) {
実行処理2
}else{
実行処理3
}
“`
また、一つ増えました。
一つ目の条件式が「false」だったら、二つ目の条件式で判定し「true」だった場合に実行処理2が実行されます。
全部「false」だった場合に、else内の実行処理3が実行されます。
elseはあってもなくてもいいです。

“`:三項式
(条件式)?trueの場合の処理:falseの場合の処理;
例:
 num = (num ==

元記事を表示

【Java】Queue、Deque、Stackの関係

Deque(デック)は「double ended queue」(両端キュー)の略。
Queue、Deque、Stackのメソッドを比較できる図を作りました。(この図が意外と見つからなかった。)

挿入(要素を挿入する)
削除(要素を取得し削除する)
検査(要素を取得するが削除しない)

メソッドにはそれぞれ、2つの形式があります。
1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。

## Queue
[Queue](https://docs.oracle.com/javase/jp/

元記事を表示

文系大学2年生が1年間で取得した資格5つ紹介

大学2年生(この1年間)で取得した資格について書いていきます。
勉強した方法や期間など、参考にしてみてください。
##大学2年生初期の自分の状況##
* ITパスポート取得済み(1年生の最初)
* 私立の文系学部生、情報系科目の勉強ほとんど無し
* 1年生の春休みに、本格的にプログラミング学習(独学)を開始
* 2生になる頃から業務開発系企業でエンジニアインターン開始

##取得した理由##

* 情報系科目を学んでおらず、幅広く学びたいと思ったため。
* 勉強継続できる事を証明するため。
* インターンに参加しており、体系的に学びたいと思う事が多々あったため。

##取得した資格5つ##

* Java Silver
* LPIC L2(L1も)
* 基本情報技術者試験
* Oracle Master Silver(新資格体系)
* UMTP L1

##Java Silver##
**対策期間:~1週間**
**使用した学習教材**

* [徹底攻略Java SE 11 Silver問題集](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E

元記事を表示

YAMAHA アカデミックパック Processingでシリアル通信する(Java)

ポート名の調べ方

“`java:serial_list

import processing.serial.*;

println(Serial.list());

“`

1:調べたポート名を”hogehoge”に入力
2:グローバル変数の「linear」「angular」に好きな値を入力
3:「a」を押すとRequestCommand
4:「b」を押すとWriteReadCommand=動き出す
5:「c」を押すと停止する

“`java:YAMAHA_AcademicPack

import processing.serial.*;

Serial Port;

//電動車椅子の速度・角速度
float linear = 0.2; //速度[km/h](-5.6~5.6)
float angular; //角速度[km/h]

//配列の宣言
byte[] data1; //RequestCommand
byte[] data2; //WriteReadCommand

//その他
int CheckSum1; //RequestCommand
int Che

元記事を表示

[Java16]instanceofの型指定に追加される制約

## 新しい構文

Java16(2021/3/16 GA予定) から正式導入される「`instanceof`のパターンマッチング」([JEP 394](https://openjdk.java.net/jeps/394)),便利そうですよね! よく知らない方のために簡単に紹介しますと,

“`java
if (a instanceof Point p) {
// p を Point 型変数として使える

}
“`

のように書けます.他にもスコープ関係など細かい仕様があるのですが,詳しい説明は他の記事に譲ることにします(~~気が向いたら自分で書くかも~~).

今回は,この記法に関連して気が付いた制約があるので紹介します.

## 型の制約

“`java
if(“text” instanceof String) {
System.out.println(“ok”);
}
“`

これは以前からコンパイルできますし,予想通りに実行されます.ところが,

“`java
if(“text” instanceof String s) {
S

元記事を表示

Javaで学ぶアルゴリズム 第3弾:順位付け

# #Javaで学ぶアルゴリズム < 順位付け >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第3弾として順位付けを扱う.

##順位付け
順位付けには様々な方法がある.また,数値であれば,高い順なのか低い順なのかという話も出てくる.ここでは3つの例を取り上げて,順位付けについての理解を深める.

##実装
例の説明を行った後に,Javaで実装したソースコードとそのときの出力を示し,考察を記述する.

####例①:非常に単純な順位付け
おそらく誰もがはじめに浮かぶような方法である.その説明を以下に図として示す.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/75cb59c4-d43d-2539-9e51-c6e1318371bc.png)
いま,61点の人の順位を求めている.順位は1~ということであるから,自分より

元記事を表示

Java double型の誤差とBigDecimal

# floatとdoubleは誤差が発生する可能性がある
以下のプログラムを実行してみる。

“`
double result = 0;
double d = 0.1;
// 0.1を10回足し算
for (int i = 1; i <= 10; i++) { result += d; } System.out.println(result); ``` ```lang:実行結果 0.9999999999999999 ``` 期待値:0.1 実行結果:0.9999999999999999 # 誤差が発生する理由 コンピュータの内部では、2進数で数値を保持している。 例えば、 10進数の「0.5」は2進数で「0.1」 10進数の「0.1」は2進数で「0.000110011001100…」⇒無限小数となり終わらない。 よって、10進数の「0.5」は誤差なくdouble型で表現できるが、10進数の「0.1」はコンピュータのビットが有限のため正確に表現できない。 # 誤差の解決方法 BigDecimalを使用する。 ``` BigDecimal result = new BigDe

元記事を表示

【精神崩壊】だからこのコードはクソなのだ!【主に俺の】

# INDEX
– 背景
– だからこのコードはクソなのだ!
– あとがき

# 背景

![Et60_3jVIAEAMQv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92447/28ac62e2-6623-4cca-524c-85a13e2fa7ed.jpeg)

かなり攻撃的なタイトルを付けたが、要はクソコードと言われるものを引き継いだり、
生産者からアドバイスを求められたりレビューをせざるを得ない状況に追い込まれ徐々に精神崩壊を起こしそうになった気がするので脳内妄想を吐き出してみることにした。つまりフィクションだ。いいね?

クソコードにも色々誕生秘話があって確かに大多数がクソ認定するコードもあるとは思うが、**レビュアの理解が追い付かない事でクソコード認定されてしまう**事もある。

はたまた、かつては輝いていたけど幾多の苦難[^1]に飲まれ、多くの兵どもの夢の跡[^2]を見守った結果、技術的観点からグリーフシード[^3]のようにクソコードとなってしまった悲しい経緯があるかもしれん。
変に*

元記事を表示

JavaでSQLのConnectionを書くときにはまったこと

# 起きたこと
Java7から採用されたtry-with-resources文を使用してSQLのストアド呼び出しをしようとしたときにエラーが発生した。

## 環境

### OS

Windows 10

### JavaVersion
jdk-15.0.2

### JDBC
sqljdbc_9.2

### SQL Server
2019

## エラーになったコード

“`java:sqlcall.java
public Connection calltest() {
String connectionUrl = “jdbc:sqlserver://localhost:1433;”
+”databaseName=TESTDB;”
+”user=TestUser;”
+”password=*******;”

try (Connection connection= DriverManager.getConnection(connectionUrl)){
return connection;
}catch (SQLException e)

元記事を表示

JMeter +JSR223 Sampler(Java)でCognito認証を通してみた

#記事について
JMeter + JSR223 Sampler(Java)でCognito認証を通す処理を行った際の備忘録的なもの

JMeterでAWS SDK for Javaを呼び出して処理をすると行った記事がなかなかなかったので、今後の自分や同じような箇所で躓いた人のために書き残しておこうと思い記事にした。

# 必要になった経緯
JMeterでAPIのパフォーマンステストを実施してするためにログイン + その後のAPI実行の処理のシナリオを設定していた。
ログインの認証処理の箇所にCognitoが使用されており、APIを実行するためにCognitoの認証を行いIDトークンを取得する必要があった。
テスト当初はaws-cliで認証処理を実装していたシェルスクリプトを`OS Process Sampler`で呼び出していたが、ちょっと強い負荷を与えるために1,000スレッドに増やして実行したところ、IDトークンの取得処理に30秒以上かかったり本体のメモリが不足したり(一応16GB積んでいるマシン)でテストにならなかった。マシンがメモリ不足となりフリーズしてしまい、電源を強制終了し

元記事を表示

JAVAの繰り返し処理についてまとめてみた

#JAVAの繰り返し処理について調べてみた
今回はjavaの繰り返し処理について思いつく方法をまとめてみようと思います。

“`
1~10の数字の合計値
“`

##1.for文

“`:for
int sum = 0;
for (int i=0; i <=10;i++){ sum += i; } ``` 一番、単純な繰り返し処理かと思われます。 int i=0でintの変数を定義して、10を超えるまでiを1ずつ増やしていく処理になってます。 ##2.while文 ```:while int sum =0; int num = 1; while(num<=10){ sum +=num; num++; } ``` 条件付きでここまできたら止める繰り返し処理の時に使う書き方です。 今回みたいな範囲が決まって1ずつ足すのではfor文の方が使われるかと思います。 ##3.do...while文 ```:do...while int sum =0; int num=1; do{ sum+=num; num++; }while(num<11) ``` whileとの違い

元記事を表示

“JAVA_HOME is not defined correctly” 解決方法 (MacOSX + adoptopenjdk)

## 環境

2021年2月11日

Mac OS Big Sur ver11.1
adoptopenjdk ver11.0.9.1
https://adoptopenjdk.net/index.html
mavenは未インストール
そのためmaven wrapperコマンドでビルド(./mvnw)

##状況

mavenでビルドするときにエラー

エラー内容はこちら

“`
JAVA_HOME is not defined correctly.
We cannot execute /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/bin/java
“`
内容は
「**JAVAの環境変数が正しく定義されていません。**」

その時の$JAVA_HOMEの中身は

“`
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk
“`

要はこのパスが間違っているということ。
このパスの定義の仕方が、JREやJDKの種類によって多少異なる

元記事を表示

JAVAのデメリット3選

#JAVAのデメリット3選
この記事ではプログラミング言語「JAVA」のデメリットについて3つお伝えしたいと思います。

##1つ目のデメリット オブジェクト指向を使いこなすのが大変
オブジェクト指向は「独立性」「再利用性」「拡張性」などを実現するために様々なコードの書き方があるのですが、
理解するまでに中々時間がかかってしまいます。。
私も初めはpythonを勉強して、その後javaを勉強し始めたのですが、「なんだこのめんどくさい言語」と思ってしまいました。
慣れたら便利なことに気づいていけるのですが、初心者の方にはハードだと思います。
私もまだ使いこなしてる自身はありません!!

##2つ目のデメリット 小規模な開発には向いていない
オブジェクト指向を実現するためにコードが長くなりがちで、小規模な開発でも時間がかかってしまいます。
慣れの問題かと思われるかもしれませんが、インタプリタ言語の方が小規模であれば慣れると早く作成できるかと思います。
使い分けが大事ってことですね。

##3つ目のデメリット 流行りの企業には入れない
これは個人的なイメージでなんですが、最近はスタートアップ

元記事を表示

ドメイン駆動設計の再構成-エリックエヴァンスの4層アーキテクチャモデルの拡張-Ver1

今回の記事では、以下の記事に掲載されている**ドメイン駆動設計**の概念を再考し、エリックエヴァンスの4層アーキテクチャモデルの拡張を目的としています。

**記事タイトル:ドメイン駆動設計における5層アーキテクチャの全体図とソースの実装例**
記事URL:https://qiita.com/aLtrh3IpQEnXKN7/items/33b0a748dec34a301b37

**記事タイトル:ブルジョワが考えたドメイン駆動設計をソ連が考案した作戦術で☆粉砕☆**
記事URL:https://qiita.com/aLtrh3IpQEnXKN7/items/efeb48953794187148c3

**記事タイトル:DIKW(データ-情報-知識-知恵)モデルを活用してドメイン駆動設計のデータ抽出アルゴリズムを改善**
記事URL:https://qiita.com/aLtrh3IpQEnXKN7/items/2394918862a29d5283cb

#ブルジョワが考えたドメイン駆動設計をソ連が考案した作戦術で☆粉砕☆からの変更点
・**ドメイン層**のクラスから**倉庫(Repos

元記事を表示

JavaのEnumでコード値からの逆引きが欲しくなるときはあるけど、本当に必要ですか?

# はじめに

([Zenn](https://zenn.dev/nslender/articles/d1936e0c4f8fd9)とダブルポストです。)
やや煽り気味のタイトルですが、必要なときは当然あります。
けど、実際は、「逆引きは使わずにすむならその方がいい」というのが、多くの人が感じているところでしょう。

この記事では以下を主な目的としています。

* 極力使わないようにするやり方
* 使わざるを得ないケースの整理
* 使う場合でも、使用箇所を減らすやり方

# Enumの逆引きとは

コード値(数値や特定の文字列)をプログラム上で扱うときに、Javaではenumを使うことが多いです。その場合、コード値から対応するenumの要素に変換したいケースもよくあります。このことをenumの逆引き(lookup)といわれることが多いです。

主な方針としては、「enum要素全体からコード値が一致するもの探索」か「コード値をキーとしたマップを作成」の2つがあります。

* [Enumを中身から逆引きして取得する](https://qiita.com/ushidatmhr/items/

元記事を表示

OTHERカテゴリの最新記事