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

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

Stream API を自前に実装するときにおさえておきたいこと

# Stream API をちゃんと使えてますか?

Java 開発者のみなさん、Stream API を使っていますか?Stream API の使い方、ちゃんとおさえていますか?

Stream API をうまく使うと表現力の豊かなソースコードを書けるから、Java 開発者なら、使い方をおさえておいて損はないと思います。

この記事は自作のコレクションで、Stream API 対応のために機能を実装する際に、おさえておきたいポイントを、サンプルコードを交えて説明したいと思います。

なお、この記事は 2023/01 現在最新の LTS である Java 17 をベースに説明し、実際使用する JDK ディストリビューションは Temurin 17.0.6 となります。

また、この記事では、Java クラスのみ指す場合に `Class` のような表記を使っていますが、一般的な用語として捉えても問題ない箇所は平文のまま(日本語または英語)で記載します。

## Stream API おさらいのお供

以前[この Advent Calendar の記事](https://qiita.com

元記事を表示

[Java] マップの初期化と同時にキーを初期化する

何度も調べてしまうので、自分用メモ。
“`
var m = new HashMap() {
{
put(“key1”, 100);
put(“key2”, 200);
}
};
“`

元記事を表示

GWTのファイル構造

GWTでは、プロジェクトをそのまま生成すると次のようになります。

パッケージ事に、役割が明確に分かれているので、
わりとすぐ理解できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/cbceb882-78c1-4231-abec-72ddde798eb3.png)

元記事を表示

Java_3層アーキテクチャについて

ソースを管理する方法として3層アーキテクチャがある。
Webアプリケーションを3つの関心事に分類して実装する。

【プレゼンテーション層】
画面からの入力
画面への出力
@Controller

【ビジネスロジック層】アプリケーションの一番重要
業務ロジック
業務ルール
@Service

【データアクセス層】
データの保存
データの取得
@Repository

参考:https://www.udemy.com/course/intellij-spring-boot/

元記事を表示

メモ MacBook Air (M1)でFlutterインストール時のJavaのエラー

# Macについて

MacBook Air M1, 2020
チップ Apple M1
OS Ventura 13.2

# 状況

下記を参照し、Macをインストール

https://docs.flutter.dev/get-started/install/macos

Javaは別途homebrewでインストール済み

“`
% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.1, on macOS 13.2 22D49 darwin-arm64, locale ja-JP)
[✓] Android toolchain – develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode – develop for iOS and macOS (Xcode 14.2)
[✓] Chrome – develop for the web
[!]

元記事を表示

db insert

“`java
public class Outer {
public static void main(String[] args) {
try {
Connection con = DriverManager.getConnection(“jdbc:derby://localhost:1527/data/Sample”);
try(con) {
shokai(con);
String sql = “insert into firsttable values (?, ?)”;
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1,60);
ps.setString(2,”sixty”);
int ret = ps.executeUpdate();

元記事を表示

db select

no argument: Statement
one or more argument: PreparedStatement

“`java
public class Outer {
public static void main(String[] args) throws Exception{
Connection con = DriverManager.getConnection(“jdbc:derby://localhost:1527/data/Sample”);
try(con) {
System.out.println(con);
String sql = “select * from firsttable where id<=?"; PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1,20); ResultSet rs = ps.execute

元記事を表示

案件準備 2023

# 案件準備
## サクってやるところはサクってやってしっかりやるところはしっかりやろう。
## Docker
◾︎ ドットインストール
https://dotinstall.com/lessons/basic_docker
◼︎Dockerのとこを読む。
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築 Tankobon Hardcover – June 11, 2020
by 大澤 文孝 (著), 浅居 尚 (著)
www.amazon.co.jp/dp/4296106422
◼︎必要そうなコマンド
docker version
docker-compose up -d

## CSS
◼︎急にちょっと使いたい時があるのでその時のための コードと参考にしたリンク

“`
HTML

HTML内に直書

“`

CSSはインラインにも記述できる。CSSの3つの記述場所を解説


◼︎Progateで学んでおく。デバックモードの練習はやっておいたほうが良い。
道場以外上級までやる。
https

元記事を表示

Non-Decreasing Digits

http://acmgnyr.org/year2010/e.pdf

## 難易度
### Midium

## アプローチ
### DP

“`java
import java.io.*;
import java.math.BigDecimal;

public class Main {
public static void main(String[] args) throws IOException {
BigDecimal[][] temp = new BigDecimal[65][10];

temp[0][0] = BigDecimal.ONE;
temp[0][1] = BigDecimal.ONE;
temp[0][2] = BigDecimal.ONE;
temp[0][3] = BigDecimal.ONE;
temp[0][4] = BigDecimal.ONE;
temp[0][5] = BigDecimal.ONE;
temp

元記事を表示

Leetcode 1470. Shuffle the Array

https://leetcode.com/problems/shuffle-the-array/description/

## アプローチ
### Brute-force

“`java
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] result = new int[nums.length];
int start = 0;
for (int i = 0; i < nums.length; i++) { if (i % 2 == 0) { result[i] = nums[start]; start++; } else { result[i] = nums[n]; n++; } } return result;

元記事を表示

Files.walkTree()

FileVisitorに定義した以下の4つのメソッド通りにディレクトリをwalk through
preVisitDirectory
visitFile
postVisitDirectory
visitFileFailed

“`java
public class Outer {
public static void main(String[] args) throws Exception{
Path p = Paths.get(“c:\\dirtest”);
FileVisitor fv = new FileVisitor() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println(“previsitdirectory : ” + dir)

元記事を表示

Files.newBufferedReader

“`java
public class Outer {
public static void main(String[] args) throws Exception{

Path p = Paths.get(“C:\\dirtest\\testfile.txt”);
Path p2 = Paths.get(“C:\\dirtest”);
File f = p2.toFile();
if(!Files.exists(p)) {
Files.createFile(p);
}
BufferedWriter bw = Files.newBufferedWriter(p,StandardOpenOption.APPEND);
Scanner sc = new Scanner(System.in);
try(bw) {
String str = sc.nextLine();

元記事を表示

Files#walk(), find(), list(), DirectoryStream

Files.walk()は該当ディレクトリのサブディレクトリすべてを探索
Files.find()は該当ディレクトリのサブディレクトリすべてを探索、BiPredicateのフィルタ付き
Files.list()は該当ディレクトリの一覧
Files.newDirectoryStream()は該当ディレクトリの一覧

“`java
public class Outer {
public static void main(String[] args) throws Exception{
Path p = Paths.get(“C:\\dirtest”);
BiPredicate bp = (p1,bfa) -> {
return p1.toFile().getAbsolutePath().endsWith(“.java”);
};
Stream s = Files.find(p,3,bp);
s.forEach(Sy

元記事を表示

【Eclipse】よく使うショートカットキー10選

ショートカットキー大好き、時短大好きな私が、Eclipseでよく使うショートカットキーをまとめました:relaxed:
最近Eclipseを使い始めた人は、ぜひこのショートカットキーを使ってみて下さい!

## コンテンツ・アシスト(Ctrl + Space)
入力補完です。
変数名やクラス名を途中まで入力してこのキーを押すと、入力を補完してくれます。
mainメソッドは「main」、System.out.println()は「sysout」と入力してこのキーを押すことで、一瞬でコードを書くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699644/b153a372-7b46-e5a2-08eb-047f8f6593f6.png)
素早くソースコードを書くためには、かなり大事です。

## フォーマット(Ctrl + Shift + F)
コードのフォーマットを整えます。
![image.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Files class createDirectories method

Path(directory).resolve(Path(file/directory))で
特定のdirectoryのfile/directoryを参照することができる
createDirectoriesは、parent directoryがない場合にmkdirしてsubdirをmkdir
createDirectoryは、parent directoryがない場合 NoSuchFileException
Files.copy, Files.moveで、copy /moveができる
“`java
public class Outer {
public static void main(String[] args) throws Exception{
String dir = “C:\\dirtest”;
File f = new File(dir);
Path p = Paths.get(dir, “subDir”, “sub2Dir”);
Path parentDir = Paths.get(dir);

元記事を表示

Files class

“`java
public class Outer {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(str);
Path p = Paths.get(“c:\\dirtest\\” + str);
File f = p.getParent().toFile();
System.out.println(f);
method(f);
if(!Files.exists(p)) {
Files.createFile(p);
}
method(f);
System.out.println(Files.getLastModifiedTime(p));
//

元記事を表示

Path interface

File classとほぼ同様の機能を持つ
Paths.getでインスタンス化する。get(“C:”,”dirtest”,”test.txt”)のような
書き方が可能。それ以外の違いが?
toFile()でfileを生成することができる

“`java
public class Outer {
public static void main(String[] args) {
Path p = Paths.get(“C:\\dirtest\\test.txt”);
System.out.println(p);
System.out.println(p.getParent());
System.out.println(p);
System.out.println(p.getRoot());
p = Paths.get(“C:”,”dirtest”,”test.txt”);
System.out.println(p);
p = Paths.get(“C:/

元記事を表示

【google-java-format】すべてのファイルを一発でフォーマットする方法

# はじめに

[google-java-format](https://github.com/google/google-java-format)は、Javaのソースコードをフォーマットするプログラムです。
[Google Java Style](https://google.github.io/styleguide/javaguide.html)に基づいて、フォーマットします。

IntelliJやEclipseなどのプラグインもありますが、ここではコマンドラインツールを利用します。

google-java-formatには、さまざまなオプションがありますが、
「すべてのファイルを一発でフォーマットする」ためのオプションはありません。

オプションの一覧

“`:オプションの一覧
Usage: google-java-format [options] file(s)

Options:
-i, -r, -replace, –replace
Send formatted output back to files

元記事を表示

Valueを付与した変数にJUnitでモックする

# Valueを付与した変数にJUnitでモックする方法

## 概要
– `@Value`を付与した変数を扱うクラスのテストを実施した際、`@Value`の変数の値がテスト時のみnullとなってしまう事象が発生

– 以下テスト対象のクラス

“`java
@Component
public class HogeService {

@Value(“${sample.variable}”)
private String sampleVariable; ← ここの変数がテストでnullで返ってくる

“`

↑の件、少し解決につまづいたので、解決方法を記載

## 結論

– `org.springframework.test.util.ReflectionTestUtils`を利用することでmockできる
“`java
ReflectionTestUtils.setField(instance, “name”, “value”, String.class);
“`

### サンプル

– `@Value`を利用しているクラス
“`java
@Compone

元記事を表示

8.2 finalと定数(Java Basic編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

OTHERカテゴリの最新記事