JAVA関連のことを調べてみた2022年05月20日

JAVA関連のことを調べてみた2022年05月20日

auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(残高管理方法変更)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

118 解答

参考:
[ArrayList, LinkedList の違い](https://qiita.com/BumpeiShimada/items/522798a380dc26c50a50)
[Nick White](https://www.youtube.com/watch?v=icoql2WKmbA)
# 解答
“`Java
public List> generate(int numRows) {
List> ans = new ArrayList<>();

if(numRows == 0) return ans;

List first_row = new ArrayList<>();
first_row.add(1);
ans.add(first_row);//最初の要素は絶対1だから

for(int i = 1; i < numRows; i++) { List prev_row = ans.get(i-1);
List

元記事を表示

566 解答

参考:
[Nick White](https://www.youtube.com/watch?v=wCdNh9oThqk)
# 解答
“`Java
public int[][] matrixReshape(int[][] mat, int r, int c) {

int m = mat.length;
int n = mat[0].length;

if (m * n != r * c)
return mat;// もし引数のサイズと出力するサイズが合わないとき

int[][] ans = new int[r][c];
int row_ans = 0; // 出力用の行
int col_ans = 0; // 出力用の列
for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { ans[row_ans][col_ans] = mat[i][j]; col_ans++; if (col_ans == c) { //ココがやややこしい col

元記事を表示

1週目Java 基礎

第1週目
Java基礎文法
intを利用した変数指定入力
long、int、short、byteなどがあり、
float,double

boolean等の真の嘘のif文作成
文字は「」
文字列は”;

小さいタイプのキャスティングに大きいのを入れる時
inti=(int)30L;こんな風にしなければならない

\n=改行を入れること
フォーマットを作って使うともっと楽だ

mathクラスmax(10,30)=30
min等

文字列数字相互変換
int i = Integer.parseInt(str);

String str2 = String.valurOf(i);
このように相互変換可能

ランダム値を受け取る
Random random = new Randon();
int rand = random.nextInt(bound4) + 5 //5
4までは走る

Javaで文字列を入力される場合
Scanner scan = new Scanner(System.in);

String str = scanner.next();
int i = scanner.ne

元記事を表示

ABC004の一部が解けたので書いた記事

## はじめに
前回同様一筋縄では行かず、またD問題が解けませんでした。難しい・・・。

とりあえず、解けた問題のコードを説明していきます。

## A – 流行
問題文は[こちら](https://atcoder.jp/contests/abc004/tasks/abc004_1)

普通に二倍しましょう。
“`A.java
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//値の取得
int N = sc.nextInt();
//二倍した物を出力
System.out.println(N*2);
}
}
“`
いわゆる「やるだけ」。

## B – 回転
問題文は[こちら](https://atcoder.jp/contests/abc004/tasks/abc004_2)

4×4ということで二次元配列使っても良かったんですがなんとなく一次元配列にしました。

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(前回実行時からの高値/安値)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

121 答え

まずは試しに単純な for loop のネスト。

# Brute Force
“`Java
public int maxProfit(int[] prices) {
int maxProfit = 0;

for(int i = 0; i < prices.length -1; i++) { for(int j = i + 1; j < prices.length; j++) { int tempProfit = prices[j] - prices[i]; maxProfit = Math.max(maxProfit, tempProfit); } } return maxProfit; } ``` 結果: TLE # 解答 ## Window Sliding Technique 次はWindow Sliding Technique をつかう。 参考: [GeeksForGeeks](https://www.geeksforgeeks.org/window-sliding-technique/) [Kindson The T

元記事を表示

【Java】Stream, Collectorsを使ってオブジェクトのListに対してsort, distinctを行う

# はじめに
`var hogeList = new ArrayList();`のようなオブジェクトのリストに対してソートや重複排除を行う際「どうやるんだっけ?」といつもググってしまうので、自分用にまとめてみる。

# ソート
結論:`Comparator.comparing().thenComparing()`を使え。

ググるとComparatorクラスを自前で作るだの、ラムダでどうだの出てくるがそれらはJava8くらいの昔話なのでスルーしてよい。
現代Java人はStream APIを使おう。
“`java:Item.java
@Builder
@Getter
@ToString
public class Item {
private int id;
private String name;
}
“`

“`java
var items = List.of(
Item.builder().id(5).name(“item5”).build(),
Item.builde

元記事を表示

Netkeiba模造アプリ作成まで①

今年4月より、エンジニアへ転職し、只今弊社ではプログラミング研修も終盤に差し掛かってきました。
Javaの基本的な文法の学習を終え、現在では、Spring bootでのアプリケーションの作成演習を繰り返し行なっていますが、そろそろ何か簡単なアプリケーションを自分の力で作ってみたいと考えるようになりました。

そこで、いつもお世話になっているNetKeibaさんの模造アプリケーションの作成に取り掛かってみようと思います。

## Netkeibaとは
知らない方も多いと思いますので、簡単に説明しますと、Netkeibaとは、株式会社ネットドリーマーズ様が提供している国内最大級の競馬情報サイトです。
![netkeiba-com-国内最大級の競馬情報サイト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630554/73523473-7951-e800-caa0-32085bd71683.png)
レース情報、競走馬検索システム、レース動画など様々な競馬に関する情報を見ることができるものすごく便利なサイト

元記事を表示

【Java】じゃんけんゲームを作ってみよう

Javaの勉強をしておりましたが、アウトプットと備忘録のために記事に起こしておきます。
なお、今回クラスの継承は一切しておらず、Mainクラスのみのとても簡易的なコードになります。

# 要件

・人間とコンピュータの10回勝負
・コンピュータはグー,チョキ,パーをランダムに選択する
・人間はグー,チョキ,パーの選択をそれぞれ0,1,2の数値を入力することで行う
・10回勝負後「あなたは,○勝○敗○引き分けでした」とメッセージを出す

### ソースコードはこちら

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

public class Main {
public static void main(String[] args) {
// 標準入力
// Scannerクラス
Scanner scanner = new Scanner(System.in);

// じゃんけんの回数を格納する変数
int janken_num = 0;
// 勝数を格納する変数

元記事を表示

Java Silver SE 11を獲得するまでの日記【1章】

# はじめに

資格を取るまでJavaの勉強やその途中で思ったことを適当に殴り書いていく。

見返したときにさらっと復習ができる程度には書きたい…
なのでこれは個人的な記事です。

# パッケージとインポートについて

パッケージの目的は次の3つ

1. 名前空間を提供し、名前の衝突を避ける
2. アクセス修飾子と組み合わせてアクセス制御を提供する
3. クラスの分類を可能にする

世の中で提供されている部品を利用する際、その部品のクラス名がかぶってしまったらエラーが出まくってしまう。

そのためクラスは「**パッケージ名.クラス名**」の完全修飾クラス名で扱う。

パッケージは名前の重複を避けるために習慣として
“`
jp.co.xxx
“`
のようにドメイン名(xxx.co.jp)を逆にして記述する。
どんな習慣だ…

これでパッケージ単位でアクセス制御することができる。

ほかにもクラス単位でアクセス制御するため
「**public**」というものがある
“`Java:公開するクラス
package jp.co.xxx;
public class Sample
{

元記事を表示

SheetAPI v4とDriveAPIを使ってJavaでスプレッドシートを操作する

Javaのwebアプリからスプレッドシートを操作したいという要望があったのだが、SheetAPIのv3については記事がいっぱいあるのだけどv4については少なくて使い方を試すのに苦労したので備忘録として書いておく。

## 1. 事前準備

### 1.1. サービスアカウントの作成

サービスアカウントの認証情報を持ったjsonファイルを作成。
作成の手順はあちらこちらのネット上にあるが、例えば以下を参照
※SheetAPIだけでなくDriveAPIも有効にする必要あり
[サービスアカウントで認証してGoogleSpreadsheetからデータを取得](https://dream-yt.github.io/post/spreadsheet-via-service-account/)

### 1.2. ユーザ側の作業

ユーザは、アプリからのアクセスを許可するスプレッドシートやドライブのフォルダに対し、サービスアカウント作成時に生成されたメールアドレスを共有設定に追加する。

## 2. 環境構築

今回はJavaのSpringBootプロジェクトでWEBアプリを作る想定で構築

元記事を表示

Aamazon EC2にDockerコンテナを立ち上げてJavaプログラムをテストしたい

# はじめに
本内容は、成り立てエンジニアな私の個人メモとしての記録であり、超基礎的な内容となっております。初学者向けとして本記事を閲覧していただければと思います。また、自身の成長につながるため、何かアドバイス・ご指摘があればコメントしていただけると幸いです。

# やろうと思ったきっかけ
新卒エンジニアとしてこの春より働くことになり、研修を行いつつ配属先での業務に少しずつ触れさせてもらっています。
そんな日々の中、ある日の会議でこんな話がありました。

>「それじゃあ、まずはEC2立てて、Kubernetes使って簡単な検証から始めていこうか。」
>(初心者過ぎて正確な内容は理解が追いつかず、上記の内容はめちゃめちゃニュアンスです)

議事録を取りながら聞いていたのですが、専門用語の応酬でとてもビビり散らかしていたことは覚えています。
その時の自分の心境としては、

> (EC2?たしかAWSの仮想サーバーサービスだったかな?ローカルとかではやらないんだ。)
> (クーバネティス?聞いたことあるけど全然イメージつかねぇ。Dockerとかコンテナに関連したやつってことだけは、なんとなく

元記事を表示

【Java】System.out.printlnを複数回呼び出した場合、AtCoderでTLEになってしまうので実際に実行時間を計測してみた

 AtCoderにて、System.out.printlnを複数回呼び出すと、[AtCoder228_C](https://atcoder.jp/contests/abc228/tasks/abc228_c)や[AtCoder231_C](https://atcoder.jp/contests/abc231/tasks/abc231_c)のように最悪$10^5$行くらいの文字列を出力する場合、TLEになる場合がありました。
 標準出力の複数回呼び出しによるオーバーヘッドの時間がかかりTLEになったものだと思います。本記事では同じ長さの文字列について、System.out.printlnを複数回呼び出して標準出力した場合の時間と、一度に標準出力した場合の時間を実際に比較しようと思います。
 計測するコードの実装内容は$0~10^5$をインクリメントした文字列を改行して出力する処理です。この処理を100回繰り返して各実行毎の実行時間を取得します。$10^5$にした理由はAtCoderで出力する行数として、よく見かけるからです。
 計測する手法は以下の三パターンです。
– 手法-1 Syst

元記事を表示

M1 MacでJavaの環境構築をする 2022年5月

## 環境

– macOS Monterey 12.3.1
– VSCode
– openjdk 18.0.1 2022-04-19
– javac 18.0.1

## 本記事で達成すること

1. 「M1 Mac」に
1. 「OpenJDK 18」を入れて
1. 「VSCode」で開発できるようにする

## 本記事の構成

1. Javaの環境構築を行う
1. VSCodeの設定を整える

## 1. M1 MacにJavaの環境を構築する

### 1-1 JDKインストール

– [azulのサイト](https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk)からダウンロード
– 画面を下にスクロールしていくと、参照画像のボタンからインストールすることができる
![JDKインストール画面](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%

元記事を表示

ABC003の一部が解けたので書いた記事

## はじめに
前回に引き続き、ABC003を解いて見ました。ただ、D問題はちょっと解法が思いつかなかったので後日解いてみようと思います。

では、ACが取れたコードを解説していきます。

## A – AtCoder社の給料
問題文は[こちら](https://atcoder.jp/contests/abc003/tasks/abc003_1)

平均値を求める式を考えると、
“`math
\dfrac{1}{N}\times\sum_{i=1}^N(10000\times i)=\dfrac{10000}{N}\times\dfrac{1}{2}N(N+1)=10000\times\dfrac{N+1}{2}
“`
となりますから、最後の式をコードに落とし込みましょう。念のためキャスト演算子でlong型にしてはいますが、最大値はN=100なので、$10000\times101=1.01\times10^6$であることを考えるとint型のままでも良いです。
“`A.java
import java.util.*;
class Main{
public static void

元記事を表示

Java8初期で知識が止まってる化石プログラマーがJava17を触って得た知見

# はじめに
Java8初期で知識が止まっている化石プログラマーが書籍『[プロになるJava](https://www.amazon.co.jp/dp/B09VK3FTDM/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)』を読んで、得た知見をメモ書き感覚であげていきます。

初歩的な内容も含まれてますが、温かい目で見守ってください。。

# JShell
CUI上でJavaコードを実行できる。Java9より導入された。
参考:https://qiita.com/nowokay/items/e0b9c676567134e4a622

tabで補完、ドキュメント表示なども可能。

/vで型を確認できる
“`shell
jshell> /v textBlock
| String textBlock = “改行あり\nの\n文字列です\n”
“`

# テキストブロック
Java15から。
`”””`で囲った文字列は複数行の文字列として宣言できる。

“`shell
jshell> var textBlock = “””

元記事を表示

Spring MVC

Web アプリケーションを MVC アーキテクチャーで開発する際に使用するフレームワークです。
フロントコントローラーパターンを採用しています。

Spring MVC の特徴
Controller や Model などのクラスは POJO として実装する
Servlet API 、フレームワーク独自のインターフェースを排除でき、ユニットテストがしやすい
Spring の DI や AOP の仕組みを活用でき、効率的に Web アプリケーションを開発できる
View の実装技術を抽象化できる。Controller では View 名だけ意識すればよく、View の実装 (JSP 、Tymeleaf など) を意識する必要がない
💡 POJO (Plain Old Java Object)
ごく普通の Java オブジェクトを指します。
継承や依存関係がないクラスとして作成します。
この名称が提唱される以前よりある Java Beans では Bean に次の条件があったため、それよりシンプルな設計となります。

public で引数なしのコンストラクタを作成する
メソッドはアクセサメソ

元記事を表示

AOP

AOP (アスペクト指向プログラミング Aspect Oriented Programming)
プログラミングをしていると、ログ出力や例外ハンドリングなどといった 複数の箇所にまたがって存在する処理 が出てきますが、これらの処理のことを 横断的関心事 (Cross-Cutting Concern) と呼んでいます。

また、プログラムからこの 横断的関心事 を分離することを 横断的関心事の分離 (Separation Of Cross-Cutting Concerns) と呼び、これを実現する手法は アスペクト指向プログラミング AOP と呼ばれています。

AOP を利用すれば、Java のソースコードから共通的な機能を分離することができます。

Spring Framework では AOP を実現するためのサブプロジェクトとして Spring AOP が用意されています。

Spring AOP では、広く使われている AOP フレームワークである AspectJ を利用しています

元記事を表示

Bean

Java のソースコード内で定義する
Bean 定義を行う コンフィグレーションクラス を用意します。
メソッドに @Bean アノテーションを付与し、Bean 定義を行います。
メソッド名が Bean 名、戻り値がその Bean のインスタンスとなります。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
@Bean
UserService userService() {
return new UserServiceImpl();
}
}

元記事を表示

OTHERカテゴリの最新記事