JAVA関連のことを調べてみた2020年07月03日

JAVA関連のことを調べてみた2020年07月03日

【Java】HashMapの最大値を取得する方法

## 開発環境・バージョン
・ホストOS: Windows10 Home
・ゲストOS: WSL2 Ubuntu20.04
・Java8

## 目的
keyの型がString, valueの型がIntegerのHashMapの最大値を取得すること

EntrySetメソッドを使って実装します。
以下は実際のコード

“`java

public static void main(String[] args) {
String arr[] = {“a”, “a”, “a”, “a”, “b”, “b”, “b”, “c”, “c”, “d”};
Map map = new HashMap<>();

//配列の要素をマップに格納
for (String string : arr) {
if (map.get(string) == null) {
map.put(string, 1);
} else {
map.put(string, map.get(string) + 1);
}
}

元記事を表示

MapやListを使ってみた

“`java
import java.io.*;
import java.util.*;
public class Q {

//   「1つ以上のスペース、ピリオド、コンマ、セミコロンのどれか」という意味
// |は区切ったもののどれかという意味で、\.は単にピリオドです(文字列表記する都合上、バックスラッシュが2つ必要)
private static final String SEPARATOR = “(\\s+?|\\.|,|;)”;
/**
* データファイルを開く
* resources/q003/data.txt
*/
private static InputStream openDataFile() {
//getResourceAsStreamメソッドを利用すると、リソースファイル(設定ファイルなどのこと)を簡単に読み込むことができる
return Q003.class.getResourceAsStream(“data.txt”);
}

元記事を表示

意外とわからない文字の入れ替え方法【原理】

Arrayクラスのsortめっちゃべんりですよね。
勝手に昇順で並び替えてくれますし、降順だってお手の物。

ですが、並び替えの本質を知らないとこの先詰むのかなと怖くなって調べました。sortメソッド使わない方法を。

#対象のコード
“`java
public class Change {

public static void main(String[] args) {
ListManager data = new ListManager();

for (int i = 1; i < 100; i++) { /* signumに渡した数値によって以下の値が返ります。   引数がゼロより大きい場合 ⇒1   引数がゼロの場合 ⇒0   引数がゼロより小さい場合 ⇒-1 */ int num1 = data.compare(i - 1, i); switc

元記事を表示

javaの正規表現~知ってて損なし~

javaでは、配列や文字を分解して配列に格納するときがあります。

その時にsplitメソッドを使って分割を行いますが、こんな感じで処理します。(変数名は適当)

“`java
private static final String SEPARATOR = “(\\s+?|\\.|,|;)”;

String[] words = line.split(SEPARATOR);
“`

# “(\\s+?|\\.|,|;)”;とは?
これらは、正規表現というのにあたります。

具体的には、「1つ以上のスペース、ピリオド、コンマ、セミコロンのどれか」という意味です。

|は区切ったもののどれかという意味で、\\.は単にピリオドです(文字列表記する都合上、バックスラッシュが2つ必要です)。

OSによって\\が¥になったり、\\を2回打ってるのにこの画面だと1つしか表示されなかったりします。

という学びでした(=゚ω゚)ノ

元記事を表示

Java:ResourceBundleのpropertiesファイルを任意の場所に配置する

# はじめに

JavaでLocateを使用する際に `ResourceBundle` を使用することになった。
そこで `ResourceBundle` 用のpropertiesファイルをresourceディレクトリ
に配置した際に、対象のファイルが見つからないエラーが発生したため、
任意の場所にpuropertiesファイルを配置するための備忘録を以下に残す。

# 出たエラー:`java.util.MissingResourceException`

## 環境

**▼ ディレクトリ構造**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239591/43ae82dd-dc5d-d630-3a6f-e72b4e218120.png)

`Main.java` にて、日本とアメリカのLocaleを用意し、各ロケール用の
propertiesファイルをresourceディレクトリ直下に配置したが、properties
ファイルが見つからないと言われた。

原因は、クラスパスが

元記事を表示

「実装」javaのProcessクラス注意事項

# バージョン
java 8
# API
先ずJava API Docsから[Processクラス](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Process.html)を一緒に見ましょう

# 注意事項
* API Docs中で下記部分はご注意ください、BUGを発生する可能性があります。

> ネイティブなプラットフォームには標準入出力ストリームに使うバッファのサイズが限られるものもあるので、サブプロセスの入力ストリームの書き込みあるいはストリーム出力の読込みが失敗した場合、サブプロセスはブロックされるか、デッドロック状態になる可能性があります。

“`bad.java
Process p = null;
p = Runtime.getRuntime().exec(“cmd /c dir”);
p.waitFor(); // 標準出力ストリームに出力量が多い場合は、プロセスはブロックされる
“`

* API Docs中で下記部分を考えると、Processオブジェクトを使う後で、destroy()メソッドを呼出し

元記事を表示

[Android]自動スクロールで手を動かすことなく実機確認を行う

一覧など、無限スクロールが存在する機能を使用するときに、実機にかかる負担をAndroidStudioのMemory Profilerで監視をし~~重箱の隅をつつく~~品質をチェックしているのだが、手で動かすのがだるい。

なので、無限スクロール自動化をしてみた。

# SampleCode

簡単にRecyclerViewのSampleコードを実装したので、こちらを使用する。
https://github.com/yamachita0109/RecyclerView

# 実際に自動scrollしてみた

下記コマンドをコマンドラインに貼り付ければOK。
もっと細かい値を指定したい場合は、[公式ドキュメント](https://developer.android.com/studio/command-line/adb?hl=ja)を参考にすること。

“`
$ while [ true ]; do
adb shell input swipe 521 1540 492 432
done;
“`

## デモ

![demo.gif](https://qiita-image-store.

元記事を表示

6行でJavaをセグフォらせる

初投稿です。お見苦しいところもあると思いますが、ご了承ください。

pythonから各言語をセグフォらせるのが流行ってきたので…

[pythonを三行でセグフォらせる](https://qiita.com/autotaker1984/items/a8ba955acdc81c907b3d)
[pythonを2行でセグフォらせる](https://qiita.com/sh1ma/items/a6dd1bcca0d9725e7e67)
[C言語で16文字でセグフォらせる](https://qiita.com/yasuo-ozu/items/ddc5d3e8e4a97eaa470c)
[Pythonを33文字でセグフォらせる](https://qiita.com/kanimum/items/95a45d8be31ef75d4332)
[Rustを5行でセグフォらせる](https://qiita.com/YoshiTheChinchilla/items/b9f4a6e92266e8ec9d3d)
[C 言語で 5 文字でセグフォらせる](https://qiita.com/zk_phi/

元記事を表示

Spring Boot で Azure Cosmos DBにアクセスする

Spring Bootを利用して、Azure CosmosDB(MongoDBコア)にアクセスしたので、その記録です。

コード書くのが怠かったので、https://spring.pleiades.io/guides/gs/accessing-data-mongodb/ を参考にしました。

まずは、普通にサンプルコードをgit cloneします。

“`sh
$ git clone https://github.com/spring-guides/gs-accessing-data-mongodb.git
“`

チュートリアル通りにローカルにMongoDBを立てて、

“`shell-session
$ sudo apt install mongodb
$ mkdir -p data/db
$ mongod –dbpath=./data/db
“`

Gradleで実行します。

“`shell-session
$ gradle bootRun

Welcome to Gradle 6.5.1!

Here are the highlights of this rele

元記事を表示

Apache JMeter で大きいファイルをダウンロードする

#やりたいこと
JMeter で大容量のファイルをダウンロードするような負荷テストをしたい。
(Azure CDN を使ったファイルダウンロードの負荷テストを行いたいという要望があり調査した内容です)

#準備すべきこと
以下の条件を整えることが重要

– 64bit 版の Java をインストールする
– JVM の実行時オプションでヒープサイズを拡張する
– ヒープサイズを十分に拡張可能な実メモリを搭載する
– 64bit 版の JVM を使う
– CUI モードで実行する

#それぞれやること
##64bit 版の Java をインストールする
Java の公式サイトから、64bit 版の Java のインストーラーをダウンロードしてインストール。
手順は下記のサイトのドキュメントを参考にして、マニュアルインストールです。

https://java.com/ja/download/faq/java_win64bit.xml

##JVM の実行時オプションでヒープサイズを拡張する & 64bit 版の JVM を使う
JMeter インストール先のディレクトリにある jmete

元記事を表示

【Java】Spring Boot 2.3.1×Thymeleafでエコーアプリケーション作ったった

## はじめに

こんにちは!
[macでSTSの環境構築を行って、](https://qiita.com/akane_kato/items/fff46dfa34f97f95dc88)[Spring BootでHelloWorldしていた](https://qiita.com/akane_kato/items/a59494b0260f0e648425)者です。
今回は簡単なエコーアプリケーションを作成してみました。

![もょもと.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/76f8e492-7b30-532e-a88e-f3a7a29ef397.gif)

画面遷移図っぽくすると、以下のようになります。

スクリーンショット 2020-06-30 20.30.29.pngSpringBoot入門ガイドやってみた【Building a RESTful Web Service編】

#目的

[Spring Quickstart Guide](https://spring.io/quickstart)を取り組み終えた方、SpringBootを学び始めた方、復習をしたい方に向けて、

公式が人気ガイドだからやってみて!と勧めてくれている、[Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)を実際に取り組み学んだことを共有します。

“`text:開発環境
OS: macOS Mojave バージョン10.14.6
テキストエディタ: Visual Studio Code(以下VSCode)
Java: 11.0.2
“`

[前回のおさらいはこちらから](https://qiita.com/morioheisei/items/59384f015e9e3801c4a7)

#1.SpringBoot projectを始めよう!

まずは、[spring initializr](https://start.spring.io/)にアクセスします。

**ADD DEP

元記事を表示

【Android 9.0 Pie】ActivityやFragment以外でのstrings.xmlの呼び出し方の例

## 初めに
定数の管理に便利なstrings.xmlですが、ActivityやFragmentを継承していないクラスで呼び出す際の方法をメモしておきます。

## 実装方法
私はApplicationクラスを継承したクラスにコンテキストを生成してしまい、定数取得用の関数を作成して呼び出し側のコードを少しでも削れるようにしてみました。

“`java:Model.java
public class Model extends Application {
private static Context context;

@Override
public void onCreate() {
super.onCreate();
context = this;
}

/**
* 定数取得関数
* strings.xmlに定義した定数をどこからでも取得できる
* @param resId R.string.resId
* @return String 定数
*/
p

元記事を表示

SDKMAN でインストールした java のバージョンをディレクトリ移動時に切り替える

.sdkmanrc を使うと、direnv のようにディレクトリ移動時に SDKMAN でインストールした java, scala などのバージョンを切り替えることができる。
比較的最近追加されたので、利用するには SDKMAN を最新(執筆時点では 5.8.3)にアップデートしておく。

## .sdkmanrc を生成
バージョンを指定したいディレクトリで `sdk env init` を実行する。

“`sh
$ cd sdkenv-test/
$ sdk env init
.sdkmanrc created.
“`

.sdkmanrc が生成され、次のようになっている。

“`sh
$ cat .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=8.0.202.j9-adpt
“`

## 設定

生成された .sdkmanrc に使用したいバージョンを指定する。

“`sh
# Enable a

元記事を表示

【最初理解できんかった】配列でソートしたいけど、配列が全部文字列!?

こんな感じで出力するつもりが、

“`java
/*
[出力結果イメージ]
1,犬
2,猫
(省略)
9,鳥
10,サル
11,馬
(省略)
20,獅子
*/
“`

なぜかこうなる…

“`java
/*
1,犬
10,サル
11,馬
12,カエル
13,みみず
14,ミミズク
15,フクロウ
16,ライオン
17,パンダ
18,ラマ
19,鹿
2,猫
20,獅子
3,魚
4,貝
5,アシカ
6,シャチ
7,かもしか
8,虫
9,鳥
*/
“`

これが解決したんで載せておきます。

#もとのコード(失敗例)

“`java
//importはしている前提
//データ一覧
private static final String[] dataList = {
“8,~~”,
“10,~~”,
“11,~~”,
“12,~~”,
“20,~~”,
“1,~~”,
“18,~~”,
“13,~~”,
“5,~~”,
“3,~~”,
“19,~~”,
“17,~~”,
“7,~~”,
“16,~~”,
“6,~~”,
“15,~~”,
“2,~~”,
“4,~~”,
“14,~

元記事を表示

Javaの配列

##はじめに
順次進行、繰り返し、条件分岐でだいたい作れるって言われても全然作れんわッッ!!(本投稿に関係はない)

##配列
**変数は1つの値**しか入れられないが、**配列は複数の値**をまとめて入れれる。
1列のものを**一次元配列**、2列以上は**多次元配列**という。
ひとつひとつを**要素**といい、その数を**要素数**という

“`kane.java
データ型[] 配列変数名;
配列変数名 = new データ型[要素数];

String[] banana;
banana = new string[3];

banana[0] = “Cavendish”
banana[1] = “Lakatan”
banana[2] = “GrosMichel”
“`

上記は宣言と代入を別に記述
下記は宣言と代入を同時に

“`kane.java
データ型[] 配列変数名 = {要素1,要素2,…};

String[] banana = {“Cavendish”, “Lakatan”, “GrosMichel”}

“`
[]はデータ型の後くっつけて書く(**int

元記事を表示

【JavaBronze(ブロンズ)】押さえておきたい問題5選

##まえがき
昨今、JavaBronze SE7/8 試験を受けました。
勉強をする中で個人的に気になった問題について紹介していきます。
##1問目.int型とchar型の互換性
###
“`
public class Q1 {

public static void main(String[] args) {
char chr = 65;
int num = ‘A’;
Q1 q1 = new Q1();
q1.func1(chr, num);
}

void func1(char chr, int num) {
System.out.println(“chr:” + chr);
System.out.println(“num:” + num);
}
}
“`
###このコードをコンパイルすると、どのような結果になりますか。1つ選択してください。
###A. chr:A
  num:65
B. コンパイルエラーが発生する
C. 実行時エラーが発生する
D. 何も表示されない

##解説
プリミティブ型であるint型とchar型

元記事を表示

未経験エンジニア奮闘記 JavaSilver合格目指して勉強中詰まったところString型編

# はじめに
これは大学中退後8年間フリーターだったアラサーが一念発起してエンジニアに転職できたはいいものの、右も左もわからなすぎるのでJavaSilverを取得しようと頑張ったけどここで詰まったよってお話です。

まず私にはほとんどJavaの知識はありません。それどころかプログラミング全般大した知識が無いと言っていいです。
学生時代に趣味と授業でC言語はいじったなぁくらいで、最近はPython3をWeb教材で勉強したぞ! ってくらいのドがつく素人です。

で、何故Javaの資格かと言われると単純に需要が高そうだから。それだけです。
オブジェクト指向ってやつをするのに適してるらしいじゃん? くらいの印象しかありません。

Java Silver合格まで勉強中詰まったところをほぼ自分用に書いていこうと思います。
間違い等ありましたら是非私の未来の為に教えてください。

#String型の不思議
とりあえずJavaの入門書を買って勉強していると、さっそく面白い内容にぶちあたりました。
なんと、String型は参照型であるため例えば

“`java:StrTest.java
public

元記事を表示

【Java】Public static void main(String[] args)ってなんぞ?

javaやっている方は必ず目にする**public static void main(String[] args)**。

実行するには必ず必要なメソッドとなります。

でも、これ、どれか1つでも間違えるとエラーになります。どうしてなんでしょうね?

気になったので、今後の同じ初心者の方向けにご紹介しておきます。

#■意味をまず理解しよう

“`Hello.java
class Hello{
public static void main(String[] args) {
System.out.println(“Hello World”);
}
}
“`

で、内容はこんな感じ。

意外と**インスタンスを理解する上ではstaticも重要**なんで覚えておこうね(戒め)

| 項目 | 意味 |
|:-:|:–|
| public | どこからでも参照可能(アクセス修飾子) |
| static| インスタンス可(new)しなくても外部から使用可能 |
| void | 戻り値なし |
| main| メソッ

元記事を表示

Kotlinのinfix

# これは何か
kotlinの予約語、infixってなんやねんって思っちゃったので定義や作り方を調べてみました。

# 目次
– なんとかfix
– 標準ライブラリの例:「to」
– infixの関数を定義する
– 定義したinfixの関数をKotlinから呼び出す
– 定義したinfixの関数をJavaから呼び出す
– infix関数を逆アセンブルする
– 参考

# なんとかfix
そもそも。infixってなんやねん。英単語を知らない(笑)
Google翻訳にかけると、「中置」って返ってくる。
ここで気づいた、なんとかfixの一個だこれ。他にもよく使ってるなんとかfixがある。
prefix、suffix。
中置きの文字通り、オブジェクトや値の間にinfix関数を置いて、挟まれた2つのオブジェクトや値を引数に処理を行う関数を定義できるKotlinの機能である。

# 標準ライブラリの例:「to」

標準ライブラリのinfix関数 `to` は、下記のように呼び出して `Pair` インスタンスを生成する。

“`kotlin:Pair.kt
val pair: Pair

元記事を表示

OTHERカテゴリの最新記事