- 1. Mapの使い方
- 2. JUnitをつくってみる。
- 3. Javaの怒られコード5選と修正案
- 4. Javaプログラミングの全て
- 5. Listのメソッド
- 6. 【Javaの基礎知識】型変換について
- 7. コードを書く上で使えそうなJava14新機能
- 8. IDE(eclipse)のデバッグ実行、ステップ実行(Java)
- 9. Javaと.NETの特性を比較してみた
- 10. 初心に帰ってJava入門②制御文、ループ文
- 11. OpenTripPlannerとGTFSを利用して独自の乗り換え案内を作ってみた
- 12. StringUtils#containsAnyメソッドの注意
- 13. JMeterで独自サンプラーを作る
- 14. JSONを使用してJava ServletからiPhoneアプリへ値を受け渡してみる
- 15. javaでアルゴリズム入門 – 探索編(深さ優先探索)
- 16. java.security.InvalidKeyException: Illegal key size or default parametersとなった時の対応方法
- 17. Javaのインストールディレクトリがわからなくなった時の探し方
- 18. 【Windows】Javaのコードが文字化け
- 19. Stringクラスのメソッド
- 20. 【言語別】ジェネリクスの型パラメータを書く場所
Mapの使い方
#Mapとは
2つの情報をkey(キー)とvalue(値)で格納するデータ構造
###HashMapのインスタンス化
“`Java
Mapマップの変数 = new HashMap ();
“`※Mapでkeyの重複することは可能ですが、valueが重複することは不可です。
要素を格納する場合はputメソッド
要素を取り出す場合はgetメソッド
要素をすべて削除する場合はclearメソッド
指定した要素を削除する場合はremoveメソッド
JUnitをつくってみる。
# 動機
「何かを勉強するには作ってみるのが良い」という言葉を聞いたことがあるでしょうか?
業務でJUnitを利用することはあっても、具体的にどう作られているのかは知りませんでした。
会社を辞めて転職活動中のため、時間があるので、実際に独自バージョンのJUnitを作ってみることにしました。# 参考にするJUnitのバージョン
JUnitのソースコードを探したのですが、JUnit4とJUnit5しか見つかりませんでした。(公式以外なら、JUnit4とJUnit5以外にも存在します。)
[JUnit4のソースコード](https://github.com/junit-team/junit4)の“`junit4/src/main/java/“`配下には2つのディレクトリが存在します。1. junit
1. org/junit中をみてみると、どうも別々のソースが格納されているみたいです。
とりあえず“`junit“`の方を参考にすることにしました。理由は下記の通りです。1. Kent Beckの”Test Driven Development: By
Javaの怒られコード5選と修正案
#はじめに
本記事では、Javaで怒られたコードを公開します。
・横に長すぎる
・処理の多すぎるStream
・無意味なラッパークラス
・returnが無駄に遅いこの4点を書いていきます。
Javaに限らず、色々な言語に存在する文法からピックアップしました。#①横に長すぎる。
ちょっとできる気がしてきたときにやりがちなコードです。
一例としては、無駄な三項演算子の使用を挙げます。“`java:BatCodes.java
/**
*
* 怒られコード①:横に長すぎる
* 怒られ度:★★★☆☆
* 怒られポイント:読み辛さがMax
*/
private boolean checkBadCode(String str) {
return str.equals(“abc”) ? true : str.endsWith(“c”) ? true : str.startsWith(“a”) ? true : false ;
}
“`こういった場合は素直にif else文を使いましょう。
Javaプログラミングの全て
## 1.Javaプログラミングの全て
“`java:superHello.HelloJava.java
/** @author Ryome */
/** Javaプログラミングの全て(カプセル化・継承・ポリモーフィズム・インターフェース・オーバーロード・オーバーライド・
* List・try-catch・例外・Javadoc)*/
package superHello;import java.util.Arrays;
class HelloException extends Exception{private static final long serialVersionUID=1L;HelloException(String m){super(m);}}
interface SuperHelloWorld {public abstract String SuperHello() throws HelloException;}
abstract class Hello implements SuperHelloWorld{final String HELLO=”Hellow
Listのメソッド
Listのメソッドについてまとめていきます。
随時更新していく予定です。#add(E e)
指定された要素をこのリストの最後に追加します。“`java
Listlist = new ArrayList<>();
list.add(“あいう”);
list.add(“えお”);
list.add(“asdf”);
System.out.println(list);
“`
“`java
[あいう, えお, asdf]
“`#add(int index, E element)
リスト内の指定された位置に、指定された要素を挿入します。“`java
Listlist = new ArrayList<>();
list.add(“あいう”);
list.add(“えお”);
//0番目に挿入する
list.add(0, “ABCD”);
list.add(“asdf”);
System.out.println(list);
“`
“`java
[ABCD, あいう, えお, asdf]
“`#
#clear()
すべての要
【Javaの基礎知識】型変換について
#はじめに
こちらの記事は、
– Javaをこれから学習し始める
– 基本的なことをおさらいしたいという方向けです。
型や変数については下記の記事に記載しております。
[【Javaの基礎知識】型や変数について](https://qiita.com/gatchan03/items/d9ca3bc662450b13c413)#基本型(プリミティブ型)の変換
ある基本型の変数から他の基本型の変数に変換す方法をご紹介します。| 変換元の基本型| 型変換が可能な変更先の基本型 |
|:-:|:-:|
| char |int, long, float, double|
| byte |short, int, long, float, double|
| short |int, long, float, double|
|int|long, float, double|
| long |float, double|
| float | double |
| double | なし |##小さい型から大きい型
整数のデータ型は、
`byte < short < int < long
コードを書く上で使えそうなJava14新機能
# Java14
2020/3/17にJava14がリリースされました。
Java14で追加された機能のうち、コードを書く上で使えそうな機能を紹介してみようと思います。# record(preview)
データ保持用のクラスが簡単に作ることができる。
“`java
public record Customer(String name, String age){}
“`
以下のクラスと同等のものが作成される。“`java
public class Customer {
private final String name;private final String age;
public Customer(String name, String age) {
this.name = name;
this.age = age;
}public String name() {
return this.name;
}public String age() {
IDE(eclipse)のデバッグ実行、ステップ実行(Java)
##はじめに
この記事は現在Javaを勉強する方に向けた私自身の理解している内容の記録です。統合開発環境でJavaのコードをデバッグ実行し、ステップ実行で動作確認することが多いので、その一連の流れを記載しようと思います。
## Eclipseをインストール
Javaの統合開発環境で今時点で無料で使えるeclipseをインストールしましょう。下記リンクでダウンロードできます。https://mergedoc.osdn.jp/
今時点での最新版のeclipse 2020を選択。
すると下記画像の画面が出てきます。今回は私の環境に合わせてインストールしていきます。Macで64bitCPUであり、Javaの環境が必要なので、下記赤枠を選択
Javaと.NETの特性を比較してみた
## 前説
この記事を書く意図はJavaと`.NET`を比較することで技術の優劣をつけることではありません。
エンジニア界隈では言語対して、往々にして宗教戦争があります。Javaのエンジニアは`.NET`がWindowsしか乗らないとディスったり、`.NET`のエンジニアはJavaは書き方がうるさいと愚痴ったりします。そういう争いは生産性がなく、無意義と考えています。この記事を書くことで双方の言語体系、Webフレームワーク、デプロイ方法を比較することで片方しか経験していないエンジニアがもう片方の技術特性を理解に役立てれば幸いです。
## 開発ツール
工、その事をよくせんと欲せば、必ずその器を利とす。(職人が立派な仕事をしたいと思ったらまず道具を研ぐ)。
まずは開発に欠かせないツールについて説明します。
| フレームワーク | ツール | 解説 |
| ——-
初心に帰ってJava入門②制御文、ループ文
#はじめに
本記事は、Javaの基礎を復習するアウトプットが目的の記事です。
お暇なときに読んでいただければ嬉しいです。#色々な書き方ができる制御文
Javaでの制御文は大きく分けて、
・if文
・三項演算子
・Stream(ちょっと違うけど・・・)
・switch文
・booleanを返すメソッド
で行います。
今回は、上3つを解説していきます。#if文
著名な言語では大体存在する文法です。
もちろんJavaにも存在します。“`java:Control.java
public long secondCheck(ListcheckTarget) {
long count = 0L;
for(String target : checkTarget) {
if(target.length() > 3) {
count++;
} else if(target.length() > 5) {
count++;
OpenTripPlannerとGTFSを利用して独自の乗り換え案内を作ってみた
#はじめに
OpenTripPlanner(以下、OTP)を経路探索エンジンとして利用して、独自の乗り換え案内サイト([欧亜大陸鉄道](https://ter.fun))を作成したのだが、OTPを経路探索エンジンとしてのみ利用する方法の日本語情報があまり書かれていなさそうなので(英語の情報もあまりないけど…)、記事としてまとめてみた。
また地図データを登録せず時刻表データだけを登録しているので、そういった使い方の参考にもどうぞ。
## OpenTripPlanner とは
[OpenTripPlanner](https://www.opentripplanner.org/) はオープンソースの統合経路探索アプリケーション。
[OpenStreetMap](https://www.openstreetmap.org/)やGTFS(後述)データを取り込んで徒歩や乗り物を含めた経路探索、いわゆる乗換案内を行うことができる。
## GTFSとは
[GTFS](https://developers.google.com/transit/gtfs)は、Googleさんが作った公共交通機関の経路
StringUtils#containsAnyメソッドの注意
`org.apache.commons.lang3.StringUtils`クラスの`containsAny`はオーバーロードされたいくつかのメソッドがあるが、ハマりやすい挙動があるため注意。
第2引数が`CharSequence`の
“`java
public static boolean containsAny(final CharSequence cs, final CharSequence searchChars)
“`
の方のメソッドは、第2引数の文字列に含まれるいずれかの`文字`が含まれていた場合にtrueとなってしまう。“`java
// 例
StringUtils.containsAny(“abcde”, “aaa”); // trueStringUtils.containsAny(“abcde”, “efghi”); // true
“`第2引数が`CharSequence…`の
“`java
public static boolean containsAny(final CharSequence cs, final CharSequ
JMeterで独自サンプラーを作る
# 背景
JmeterでGMailに来ているURLを手当たり次第踏んでいく。というツールを作成中の事。
MailReaderSamplerの挙動がよくわからない・・・・
imapはリファレンス通りやってもつながらない。
pop3は繋がる。でも本文どうやって抽出するんだ?みたいなことに。
具体的には、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238561/d4461010-90b9-7358-0348-5fa34830b30e.png)こんな感じでネストしていて、この本文を後処理の正規表現抽出とかで取る方法がわからない
(最下層の1個目のリザルトにフォーカスを合わす方法がわからない)結局、昔サンプラーを自作したことがあるので、サンプラー自作しよ。
ということに。サンプラー自作方法もかなり忘れてたのでどうせなら記事に。
# バージョン
apache-jmeter : 5.2.1
JRE : 1.8# サンプラーのコード
“`DemoSampler.java
pac
JSONを使用してJava ServletからiPhoneアプリへ値を受け渡してみる
会社の同期に誘われてiPhoneアプリを作成している最中、WebサーバーとiPhoneアプリ間の値の受渡しをどうするか悩んでいました。その時、どうやらJSONを使用して、値を受け渡すらしい!ということを知りました。
そこで、色々調べた結果、無事にJSONを使用した値の受渡しができたので、まとめます。新人研修&自己学習で得た知識で書いてるので、間違っている箇所やより良い方法があれば、コメントください、、、、
#作成するアプリ
画面としては、こんなかんじです。
![スクリーンショット 2020-05-12 22.47.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632247/36f105b4-04bd-7d6f-3949-4d7562109f32.png)流れとしてはこんな感じです。
① 「JSONを取得する」ボタンを押し、JavaServletへランダムな数値を渡す。
② JavaServletは、受け取った数値に応じたJSONをレスポンスする。
③ Swiftは、受け取
javaでアルゴリズム入門 – 探索編(深さ優先探索)
# 記事の概要
自分の勉強兼メモでまとめている記事シリーズです。
こちらの記事の続きです。
[javaでアルゴリズム入門 – 探索編(全探索、二分探索)](https://qiita.com/aja_min/items/2dd5abba8ebb9f8977a5)
今回の記事では– 深さ優先探索
について勉強します。前回の記事の続きのノリで書いています。
## 深さ優先探索
ここからもうなんですかこれって感じですが進めましょう。学びつつまとめつつ。
深さ優先探索です。
DFS(depth-first-search)とも呼ばれるらしいですね。そういえば良くこの単語見ますね。
深さ優先探索、幅優先探索は木やグラフの探索に有用らしいですね。木やグラフの説明は割愛でいきます。
以下に図を載せます。(wikipediaより)
こんな順番で木を深さ優先で探索していくのがDFSみたいですね。
![DFS](https://upload.wikimedia.org/wikipedia/commons/5/5d/Depth-first-tree.png)「なにが深さ優先なのかわからないよ!」と
java.security.InvalidKeyException: Illegal key size or default parametersとなった時の対応方法
– 環境
– Red Hat Enterprise Linux Server release 6.3 (Santiago)
– java version “1.7.0_79”# 事象 : 複合化する処理が動いたらInvalidKeyExceptionが発生した
ほかのサーバから送られてきたパラメータを複合化する処理が動いたらInvalidKeyExceptionが発生した“`bash
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.in
Javaのインストールディレクトリがわからなくなった時の探し方
サーバでいろいろな事情によりインストールディレクトリを見失ってしまった。
# 方法1 : 環境変数の`JAVA_HOME`を見る
今使っているバージョン(javaコマンドで動くバージョン)ならこれでOK。“`bash
$ printenv JAVA_HOME
/usr/java/default
“`# 方法2 : 環境変数の`PATH`を見る
今使っているバージョン(javaコマンドで動くバージョン)で`JAVA_HOME`がない時はこれでOK。“`bash
$ printenv PATH | sed -e ‘s/:/:\n/g’ | grep java
/usr/java/default/bin:
“`# 方法3 : `yum`でインストールしたパッケージ名で探す
いくつもバージョンをインストールしていることはよくあること。
`JAVA_HOME`に設定していないバージョンのJavaを探したいとき。参考 : [yumでインストールしたパッケージのインストール場所を調べる – 学生時代に頑張ったことが何もない](https://muupan.hatenad
【Windows】Javaのコードが文字化け
JavaのコードをWindowsのコマンドプロンプトで実行すると文字化けしてしまう問題。
やり方が2通りあるので紹介します!!
![471c1995a62dc4b007e3ab8e72e6e08c[1].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610089/a8a496a8-3420-a975-ba27-5a006d163917.png)# なぜ起こるのか
テキストエディタとコマンドプロンプトの文字設定が食い違ってるからみたいです。コマンドプロンプトのプロパティの「オプション」タグの下部に、
現在のコードページが`932 Shift-JIS`となっていますね。
けど、VScodeの設定からEncodingを見ると`urf8`となってるので合わないから化けちゃったのかもです。
なので今回はVScodeに合わせて設定していきます。## 前提
– Windowsでプログラミングしている人
– Java初学者
– VScode使ってます。# 解決法1 CHCPコマンドを使う
CHCPコマン
Stringクラスのメソッド
Stringクラスにはたくさんのメソッドが用意されており、自分自身漏れていたり、知らなかったものもあったので、この際にまとまることにしました。
#charAt(int index)
指定されたインデックスのchar値を返す。“`java:
String test = “あいうえおかきくけこ”;//指定されたインデックスのchar値を返します。
System.out.println(test.charAt(0));
System.out.println(test.charAt(2));
System.out.println(test.charAt(5));
“`
“`java:
あ
う
か
“`#codePointAt(int index)
指定されたインデックス位置の文字(Unicodeコード・ポイント)を返す。“`java:
String test = “あいうえおかきくけこ”;//指定されたインデックス位置の文字(Unicodeコード・ポイント)を返します。
System.out.println(test.codePointAt(0));
Syste
【言語別】ジェネリクスの型パラメータを書く場所
言語によって型パラメータを書く場所が異なり混乱するためまとめてみた。
(編集リクエストをいただければ他の言語も追加します。)## Java
### 型定義
“`Java
class MyType{ }
“`### 変数の型指定
“`Java
MyTypemyVariable
“`### 関数定義
“`Java
public staticvoid myFunction() { }
“`### 関数呼び出し
“`Java
this.myFunction()
“`## Kotlin
### 型定義
“`Kotlin
class MyType{ }
“`### 変数の型指定
“`Kotlin
val myVariable: MyType
“`### 関数定義
“`Kotlin
funmyFunction() { }
“`### 関数呼び出し
“`Kotlin
myFunction()
“`## TypeScri