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

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

【Java】HashSetの使い方

# はじめに
## HashSetとは
* 要素の重複を許可しない集合構造
※ 集合(Set)
# Setの特性
## 1.重複が許されない
* add()で要素を格納できるが、同じ要素ががあると(`equals()`で等価と判断される)が格納されていると`無視される`
“`java:重複した値の追加
public class ClassA {
public static void main(String[] args) {
Set colors = new HashSet();
colors.add(“赤”);
colors.add(“黄”);
colors.add(“青”);
// 重複して「赤」を格納しようとしても無視される
colors.add(“赤”);
System.out.println(“色は” + colors.size() + “種類”);
}
}
“`
![image.png](https://qiit

元記事を表示

ISO 8601形式のDateTimeに気をつけよう

## 概要

これは、私の体験談ですがFlutterでクライアントサイドの開発をしている際、APIのレスポンスで来る日付と、アプリ内部で持っている現在日時を比較するというロジックに関する不具合報告が上がってきました。
それについて調査していたところ、*ISO 8601*形式のDateTimeがAPIから返却されるのに対し、何も考えずただDateTime型にパースしていました。

その結果、よからぬ挙動を起こしていたため備忘録として残したいと思います。

## DateTimeの種類(抜粋)
データーベースのシステムや、FirebaseなどのNoSQLサービスなどにも依存すると思いますが、DateTimeはいろいろな形式があります。

:::note warn
この記事でのサンプルは、JST(日本標準時)の補正をかけた時間を用います
:::

#### ISO 8601
ISO8601が今回の問題の日付フォーマットですが、以下のような種類があります
– 完全形式: `2023-08-01T00:00:00+09:00`
– 短縮形式: `20230801T000000+0900`

元記事を表示

Internet Explorerを使わずにブラウザでOracle Forms 10gまたは11gにアクセスする方法

![Oracle.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486144/53af8413-39aa-d1ee-9c52-4593c2255bca.jpeg)

Internet Explorerが使われなくなり、ブラウザからOracle Forms 10gや11gにアクセスすることがますます難しくなってきました。

これらのバージョンのOracle FormsはJavaアプレットか、FSALのようなスタンドアローンのJavaベースのランチャーに依存しているからです。IEのEOLは、主要なブラウザがセキュリティ上の問題から、Javaプラグインを含むNPAPIプラグインのサポートをやめ、最新のHTML5を採用する傾向に続いている。

IEの無効化によって、Oracle Formアプリケーションへのアクセスを維持する必要がある企業のワークフローに大きな変化が生じ、MicrosoftのEdgeとEnterprise Mode Site List(EMSL)が必要になりますが、このプロセスにはいくつかの欠

元記事を表示

【自主制作】第2回Webアプリケーション開発:メニュー提案アプリ(仮)編

# はじめに

初めまして。takunと申します。
この記事では個人的なWebアプリケーションを開発したプロセスと困難だった点についてまとめていく内容となっております。

私は4月から某SES企業にIT未経験での転職をした初心者エンジニアです。間違ったことや不適切な内容となってしまう可能性もあることをご承知ください。また、助言など頂けると嬉しいです。
また、心の声ダダ漏れな日記となっていますので苦手な方はご注意ください。

# 目次

① Webアプリケーション制作に至った経緯
② 概要・設計について
③ 開発で困難だった点と解決策。今後の追加機能について。

# ①Webアプリケーション制作に至った経緯

### 「ねえ、今日のご飯何がいい?」
こんなふうに聞かれてなんて答えるか困った経験はないですか。

親やパートナー、あるいは友人がこのように訪ねてきてうまく答えられず、、
> 私:うーん、なんでもいいよー
彼女:じゃあ、お蕎麦にしよっか
私:いや蕎麦はちょっと・・・
彼女:は?(怒

と喧嘩にもなりかねません。

そんな時にいい感じのメニューを考えてくれるアプリがあったらな

元記事を表示

ABC312A~Fの解答[Java]

## はじめに
今回はコンテスト中にDまでとFを、コンテスト後にEを解いたのでFまで載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc312/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認下さい。
では、見ていきましょう。

## A – Chord
問題文は[こちら](https://atcoder.jp/contests/abc312/tasks/abc312_a)

特に何も考えずにequalsで全部比較しました。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimplePrinter out = new Simpl

元記事を表示

Springで始めるWeb開発1

# はじめに

これまでにJavaの開発経験がなかったのでJavaをもっと知るために開発を始めました。
JavaでWeb開発をしたいと思ったときにJavaのフレームワーク「Spring」を知ったのでSpringを使って開発していきます。

# 目次

1. [Springとは](#chapter1)
2. [Thymeleafとは](#Chapter2)
3. [Controllerの記述](#Chapter3)
4. [JAR/WAR](#Chapter4)



## Springとは

SpringはJavaで開発されているフレームワークの一つ。開発はMVCモデルです。(MVCモデルについては今回は省きます。)

Model システムの中でロジックを担当。データベースとデータのやり取りを行う。

View 表示や入出力。Webブラウザに表示するHTMLを動的に生成する部分。

Controller ユーザーの入力に基づき、Mode

元記事を表示

Java-「ローカライズってなんぞ!?」

## 前置き
こんにちは、皆さんがお盆休みでもせっせこ勉強している雑魚SEだよ。
今日はJava Goldの試験範囲でローカライズについての出題があるんだけど、私があまり気にしたことのない内容だったので
黒本の回答をもとにまとめてみたよ!

## ロケール情報って?
> javaは、それぞれの国や地域に柔軟に対応するためのクラスやインターフェースが提供されています。このうち、最も基盤となるクラスがjava.util.Localeです。このクラスは地域や言語といった「ロケール情報」を扱うためのクラスです。
–黒本より引用

「ふーん( ´_ゝ`)フーン、そんなのなんでもいいけどなー」

…きっと知識がないからありがたみも分からないのかな。

「あれ、もしかしてこれ使えば、アクセスしてきた人の個人情報(住所とか)も分かっちゃうかな!?」

(;゚д゚)ゴクリ…

## Localクラスの使用例1(国と言語の表示)
“`java
import java.util.Locale;

public class LocaleSample1 {
public void printLocale

元記事を表示

スッキリわかるJava入門 第3版を読んでみて-part2-

# はじめに
こんにちは・ω・)ノ
前回に引き続いてスッキリわかるJava入門のまとめを書いていこうと思います(^ω^)
今回は式や型変換について学びました!

## 第2章 式と演算式
### 1.計算の文
`b= a + 5`のようなもの __式__ という
・「b」「a」「5」を __オペランド__
・「=」「+」を __演算子__

__すべての式はこの2つの要素でできている__
### 2.オペランド
__リテラル__…ソースコードに記述されている具体的な値,リテラルはデータ型を持っている

__エスケープシーケンス__…¥記号と後に続く文字
何に使うのか?
 ⇨ ” や ’ を文字として取得する
### 3.評価のしくみ
__評価__…式に従って計算処理をすること

#### 評価の3つの原則
1.評価結果への置換の原則
 演算子はオペランドを巻き込んで結果に置き換わる
2.優先順位の原則
 Javaで決められた優先順位の高い演算子から順に評価される
 ↑基本的に数学と変わらない?
3.結果規則の原則
 同じ優先順位グループに属する演算子が複数ある場合
 ⇨演算

元記事を表示

JavaでPowerPointをXPSに変換する

## はじめに
PowerPointのプレゼンテーションをXML Paper Specification(XPS)に変換することで、ユーザーはPPTファイルを異なるプラットフォームで印刷や共有が可能な形式に変換することができます。XPS形式は、元のプレゼンテーションのレイアウト、グラフィック、フォーマットを保持し、高品質な印刷出力効果を提供します。PPTをXPSに変換することで、ユーザーは特定の要求や使用シナリオに応じて、PPTファイルを静的に閲覧および配布可能なXPSファイルに簡単に変換することができます。以下に変換方法をご紹介します。

## ツール
IntelliJ IDEA 2018 (jdk 1.8.0)
[Free Spire.Presentation for Java](https://www.e-iceblue.com/Introduce/free-presentation-for-java.html)
ご注意ください。この無料版には、スライド枚数が3枚までの制限があります。さらに多くのスライドを変換したい場合は、[商用版](https://www.e-iceblue.

元記事を表示

コールヒエラルキーを使うといい場面と避けたほうがいい場面

# コールヒエラルキー

:::note
**メソッドや関数がどのように呼び出されているか**に関する階層構造
:::

## コールヒエラルキーを使うといい場面の例

### 影響範囲の把握
– 特定のメソッドが他にどのメソッドから呼び出されているかを知る
→**変更を加える予定のメソッドが他のメソッドに影響を与えるかどうかを特定**するのに使える

### テスト対象の特定
– 変更される可能性のあるメソッドがどのテストケースに関連しているかを特定
→影響を受ける可能性のあるテストケースを重点的に検証可能

### リファクタリングのサポート
– リファクタリングを行う際に、変更したいメソッドが他の部分にどのように影響を及ぼすかわかる
→リファクタリングが正確で安全に行える

### デバッグとトラブルシューティング
– 特定のメソッドがどのように呼び出され、データや処理がどのように伝播しているかわかる
→問題の原因を特定しやすくなる

### パフォーマンス最適化
– コールヒエラルキーを分析することで、パフォーマンスボトルネックを特定できる

元記事を表示

スッキリわかるJava入門 第3版を読んでみて-part1-

# はじめに
4月から入社して早くも3ヶ月が過ぎ本格的に業務も始まり自分も業務を任されました!
早速対象のコードを読んでみると….
何が書いてあるかわからない(´・ω・)
ということで __スッキリわかるJava入門第3版__ で勉強しようと思います!
全18章+付録3つを各章ごとにアウトプットとしてまとめていければと思います(^ω^)

## 第1章 プログラムの書き方
### 1.開発の流れ
1.ソースコードの作成
 人が読める状態のプログラム= __ソースコード__
 ソースコードを書き込んだファイル= __ソースファイル__
2.コンパイル
 ソースファイル ⇨ クラスファイルに変換
 ソースコードの各命令をコンピュータが実行しやすいように変換された __バイトコード__ が詰まっている
3.実行
 __インタプリタ__ にバイトコードの変換と実行を依頼
 __JVM__ がバイトコード⇨マシンコードに変換

### 2.Javaプログラムの基本構造
・__ブロック__ `{}`
 外側のクラスブロックと内側のメソッドブロックによる二重構造を持っている

・Javaソ

元記事を表示

launch4jをコマンドラインで実行する方法

# はじめに
本記事ではjarファイルからexeファイルを作成するツールであるlaunch4jをコマンドラインから呼び出す方法を説明します。

# 環境
* Windows11

# 1. launch4jcを利用可能にする
launch4jをコマンドラインから呼び出せるlaunch4jcをダウンロードしてPATHを通します。

1. Launch4jの公式サイトにアクセス
https://launch4j.sourceforge.net/
2. 左のタブの「Download」からダウンロードページヘ移動して`launch4j-x.xx-win32.zip`をダウンロード
![スクリーンショット 2023-08-01 121803.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2608343/d5acec93-e4c1-0cbd-2e5d-eb21e0a638ea.png)

2. ダウンロードしたzipを展開して適当な場所に移動
3. lanuch4jcがあるディレクトリ(`launc

元記事を表示

GenericListを実装してみた

OOPの理解のため、
抽象クラス、インターフェース、ジェネリクスを使用して、 双方向連結リスト(GenericLinkedList)と動的配列(GenericArrayList)のデータ構造を作成しました。

※実装の詳細については、後日追記します。

“`java
import java.lang.StringBuilder;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

interface Queue {
public abstract E peekFront(); // リストの先頭にある要素を返します。
public abstract E popFront(); // リストの先頭の要素を削除し、削除した要素を返します。
public abstract void pushBack(E data); // リストの末尾に要素を追加します。
}
interface Stack {
public abstract E peekBac

元記事を表示

Least Recently Used (LRU) キャッシュを実装してみた

OOPとキャッシュアルゴリズムの理解のため、 Least Recently Used (LRU) キャッシュのデータ構造を作成しました。

汎用型のデータを扱うことができます。 読み取りを O(1)、挿入を O(1)、空間計算量を O(n) で行うため、ハッシュマップと双方向連結リストを用いて実装しました。

※実装の詳細については、後日追記します。

“`java
import java.util.Map;
import java.util.HashMap;
import java.lang.StringBuilder;

interface Stack{
public abstract E peekBack();
public abstract E popBack();
public abstract void pushBack(Node node);
}
interface Queue{
public abstract E peekFront();
public abstract E popFront();
pu

元記事を表示

[速習] Spring 第3回 ソフトウェアのプロフェッショナルへの道 (Spring BootとSpring Frameworkのサポート情報)

![c03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3521573/ec287ad0-1a9c-7f2b-c3e0-1ea785d9d33f.png)

https://qiita.com/ShigemoriMasato/items/754363ffd4335251c438

前回の記事では、Springの中心的な特性である依存性注入(Dependency Injection, DI)とAOP(Aspect Oriented Programming)について説明しました。今回は、Spring BootとSpring Frameworkのサポート情報について深堀りしていきます。

## サポートについて

フレームワークやライブラリのサポート期間は、その製品が安全で、信頼性が保証されている期間を示します。サポート期間中は、セキュリティアップデートやバグ修正が提供され、アプリケーションは新たに発見された脆弱性やバグから保護されます。しかし、サポート期間が終了すると、これらの更新が停止します。この結果、

元記事を表示

【JAVA・学習ログ①】プログラムの基本構造/変数・定数の宣言

無知識・未経験の事務系OLによるプログラミング学習備忘録です。

≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## ■プログラムの基本構造
![スクリーンショット 2023-07-31 224854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/508ccef8-5691-c964-d6cc-61a78760f3db.png)
【実行】
![スクリーンショット 2023-07-31 231046.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/4a361f26-c11c-d4a5-8cec-6ae96e51b7d8.png)

*文末の「;(半角)」は忘れがちになるので気を付ける

## ■変数宣言

変数…データ値を代入できる箱のようなもの。
![スクリーンショット 2023-08-01 004233.png](https://qiita-image-sto

元記事を表示

Javaのフラグの利用について学習してみた

# 概要
Javaのフラグの利用について学習してみました。以下のページを参考にしました。

フラグの利用

正規表現でフラグを有効にする

https://www.javadrive.jp/start/regex/index16.html

CASE_INSENSITIVEフラグ(大文字と小文字を区別しない)

https://www.javadrive.jp/start/regex/index17.html

MULTILINEフラグ(複数行モードを有効にする)

https://www.javadrive.jp/start/regex/index18.html

DOTALLフラグ(ドット(.)が行末記号とマッチする)

https://www.javadrive.jp/start/regex/index19.html

UNIX_LINESフラグ(\nのみ行末記号として認識される)

https://www.javadrive.jp/start/regex/index20.html

COMMENTSフラグ(パターンの中にコメントを記述する)

https://www.javad

元記事を表示

【自作アプリ】実装機能④

【画面レイアウト】
![集計画面➀  実装機能④.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/34ca9d7f-f3ae-5ebc-fa41-8e629daf0787.png)

![集計画面➁ 実装機能④.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/fef29be1-d95a-cfba-97d4-1d3a15f5e253.png)

![集計画面➂ 実装機能④.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/044e59d9-4503-47e6-a24e-896786dee4b9.png)

![集計画面④ 実装機能④.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/8f6ee053-a14

元記事を表示

【Assertj】あまり知られてないアサーションメソッドPath編

# はじめに
みなさん、単体テストを書くときにどのアサーションを使うか考えていますか?
おそらく多くの方がしっかりと考えて書いていると思います。
~~まさかisEqualToしか使ってないなんてことはないですよね?~~
ここではPathインターフェースを対象としたアサーションメソッドを紹介します。

:::note warn
ここではアサーションメソッドのみを紹介します。
テストに関するベストプラクティスなどには触れません。
:::

## 環境について
– Java17
– SpringBoot 3.1.2
– spring-boot-starter-test
– JUnit 5.9.3
– assertJ 3.24.2

# AbstractPathAssert
assertThatにPathを指定するとこのAssertクラスが返されます。
java.nio.file.Pathに含まれるメソッドに近いものを一通りカバーしています。

## exists()
対象のパスが**存在すること**をテストするアサーション。
“`Java:exists/doesNotEx

元記事を表示

【Java】LinkedListの使い方

# はじめに
## LinkedListとは
* コレクションの1つ(他のコレクションには[ArrayList](https://qiita.com/smartPG/items/07d8bd8540eb160e78c8)もある)
* `連結リスト`
* ArrayListと作りは同じで、クラス内部の作り(内部実装)に違いがある
## ArrayListとの違い
ここのでの`速い`はメリットで、`遅い`がデメリットです。
### 1.内部実装の違い
#### 内部構造
* ArrayListとは、それぞれの箱が整列されている。
* LinkedListは、それぞれの箱自体はバラバラ。箱は「次はどの箱に繋がるか」という`連結`情報を持っている。(数珠つなぎ)

### 2.要素の挿入や削除に対する違い
#### 要素の挿入・削除 add(),remove()
* ArrayList…`遅い`
途中の要素が削除されると、それより後ろのにあった要素を1つずつ前に移動させていく処理が遅い理由(後ろの要素すべてを`「玉突きコピー」`)
* LinkedList…`速い`
remove()を行ったと

元記事を表示

OTHERカテゴリの最新記事