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

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

forの書き換えなんだろと理解しているStreamAPIを少し深堀する。

JavaのStreamAPIを書きながら、そういえばこれってどういことなんだと
自分が疑問に思っていたことについて少しまとめてみました。
StreamAPIのtips集ではないので、そういうの期待されて記事を覗いた方は申し訳ありません。

# この記事の概要
この記事を読めばこの要素について、ちょっと理解できる。
– 関数型インターフェース
– 中間処理と終端処理

# この記事の目指すところ
なんとなく理解しているStreamAPIの文法的な要素を覚える。

# そもそもStreamAPIの書き方って、どんなのだっけ。
1~10の偶数のみを表示するといった処理の場合のStreamAPIの書き方は下記のような形です。

“`java
Arrays.stream(new int[]{1,2,3,4,5,6,7,8,9,10})
.filter( i -> (i % 2) == 0 )
.forEach( i -> System.out.println(i));
“`
(IntStream.rangeを使ったカッコいい形もありますが、そこは置いといて、、、)
ちなみ

元記事を表示

ArrayList配列でwhileによる繰り返し処理でIteratorで全部表示する

#ArraylistをIteratorで全件表示する方法

“`
//Listの宣言
List fruits =new ArrayList<>();

fruits.add(“リンゴ”);
fruits.add(“スイカ”);
fruits.add(“ナシ”);
fruits.add(“バナナ”);

//Iteratorの宣言
    Iterator it2= fruits.iterator();

//hasNextを使用して値がある場合はループを継続する
while(it2.hasNext()){
//nextを使用して値を取得する
String nation = it2.next();
System.out.println(nation);
}
“`

元記事を表示

Spring Boot でテーブルのデータをビューに出力するまでの流れ

## 事前に必要なこと
・DBへの接続設定を行う

## 大まかな流れ
Usersテーブルからデータを取得し、表示するという設定です。

1. エンティティを作成する
2. リポジトリを作成する
3. コントローラを作成する
4. ビューを作成する

## エンティティを作成する
Usersテーブルのデータを取得した値を保存するのに利用する。

“`com.example.entities.UsersEntity.java

@Entity
@table(name=”Users”)
public class UsersEntity{
@Id
private Integer id;
private String name;

public Integer getId(){
return id;
}

public String getName(){
return name;
}
}
“`

## リポジトリを作成する
リポジトリはDBとデータのやり取りを行う。

“`com.example.repositories.UsersReposi

元記事を表示

SolrJ で JSON をインポートする

#課題

SolrJ ではドキュメントをインポートするのに「SolrInputDocument」クラスを使うことになっていますが、JSONからSolrInputDocumentに変換する機能は提供されていないようなので作りました。
フィールドのタイプをプロパティで指定できるようにしてあります。

#Code

“`java
import java.io.IOException;
import java.util.Properties;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;

impo

元記事を表示

GCPのjavaクライアントライブラリからStackdriver loggingにエラーを投げてもStackdriver ErrorReportingには入らない

# 超概要
stackdriver loggingのJavaクライアントライブラリからLogbackを使って利用する場合にはErrorをLogに送っても、Stackdriver ErrorReportingの方にはそのまま入らない。(題名通り
通常はStackdriver loggingにError以上のLogを入れるとErrorReportingの方にも入るのだが(それから通知などに使える)
Javaクライントライブラリ(Logback使用)の場合はどうやっても入らなかった。
これにハマって色々と調べるとなかなかつらいことが判明。

## 経緯
時代にさかのぼってる感ありだが、最近Java(正確にはKotlin)で動くデスクトップアプリを制作している。
各ユーザーさんの環境で動くアプリケーションがどのようなエラーを吐いているかを見たいので、クラウドのロギングサービスを導入しようと思った。
ちょうどGCPを色々と試していた&Stackdriver ErrorReportingはJavaで使ったことあったので、Stackdriver loggingを使うことにした。

## Stackd

元記事を表示

【java】if文でString型の条件文が無視される

#javaでif(string == “test_string”)を使っているあなた.

“`java
String = “test_string”;

if(string==”test_string”){
System.out.println(“SUCCESS”);
}
“`

このようなString型の条件文にうまく入れないことがあります.

そんなあなたに朗報です.

“`java
String = “test_string”;

if(string.equals(“test_string”)){
System.out.println(“SUCCESS”);
}
“`

こちらを使えば入れます.

元記事を表示

SolrJ でドキュメントをインポートする

# Code

“`java

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;

public class HelloDocumentAdd2 {

public static void main(String[] args) throws SolrServerException, IOException {

St

元記事を表示

【Android】音量変更(=音量ボタン押下)の検出方法

昔からあるレガシーな方法ですが、ググって出てくる情報が少し実用性には欠けるため、書いておきます。

## 手法
音量変更もしくは音量ボタンが押された事を検出するIntentとして、AudioManager.VOLUME_CHANGED_ACTION (android.media.VOLUME_CHANGED_ACTION)があります。これをBroadcastReceiverで受ければ良いだけです。

ここまではググってすぐに出てくる情報ですが、AudioManager.VOLUME_CHANGED_ACTIONは以下の点に注意する必要があります。

– 一度の音量変更操作で複数のイベントが通知される
– AudioManager.STREAM_MUSICなどSTREAM毎に通知され、しかも音量変わって無くても通知される
– 画面ON中の初回ボタン操作時は音量UI表示され、実際には音量が変わらないためにイベント通知されない
– 画面OFF中は音楽アプリ等で音楽再生していないと、ボタン押してもイベント通知されない
– ボリュームが変わらないため

## ソースコード

元記事を表示

JScrollBarで自動スクロールしようとしたらイベントハンドラの描画が1度だけだった件

詰まって数時間が吹き飛ばされたので、メモ代わりに。Swingを使っている人ならだれでも一度は通る失敗(らしい)。

##どんなのをつくっていたか
Javaで自作シェルっぽいものを作ろうとしていて、JScrollPaneを自動スクロールさせようとしていた。調べながら書いたソースコードがこれ。

“`Java:MyShell.java
class MyShell extends JFrame implements ActionListener{
MyShell{
//(中略)
String now = new File(“.”).getAbsoluteFile().getParent().toLowerCase();//カレントディレクトリ

JTextField text = new JTextField();//入力エリア
text.addActionListener( this );
JTextArea area = new JTextArea(now+”->”);//表示エリア
JScrollPane scrollpane =

元記事を表示

astah*プラグイン開発スニペット

###### 現在開いている図取得
“`java
IDiagramViewManager diagramViewManager = api.getViewManager().getDiagramViewManager();
IDiagram currentDiagram = diagramViewManager.getCurrentDiagram();
“`

###### 選択されている図要素取得
“`java
IDiagramViewManager diagramViewManager = api.getViewManager().getDiagramViewManager();
List iPresentationList = Arrays.asList(diagramViewManager.getSelectedPresentations());
“`

###### 文字の色を変更
例:inpはINodePresentationです。IPresentation派生なら行けるかと。

“`java
inp.setProperty(Key.

元記事を表示

Spring Framework 5.2.0 – CORSハンドリング変更によるVary header重複

5.2.0.RELEASEにてSpring Securityを使用する場合、以下のVaryレスポンスヘッダーが重複することがある。

– Origin
– Access-Control-Request-Method
– Access-Control-Request-Headers

特にこんな感じで`@CrossOrigin`なControllerのテストを実行する際に重複してしまう。

“`java
@Autowired
private WebApplicationContext context;

private MockMvc mockMvc;

@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context)
.apply(SecurityMockMvcConfigurers.springSecurity()).build();
}
“`

## 対象
Spring Framew

元記事を表示

ユークリッドの互除法(Java)

## ユークリッドの互除法

**2数の最大公約数を求める手法**
同処理を繰り返すので、再帰関数を使うと短く書けます

**考え方**
1. 余りが0なら終わり(その時の割る数が答)
2. 余りが0でなければ、「割る数→割られる数」「余り→割る数」として繰り返し

“`java:Euclid
static long gcd(long x, long y) {
return x%y==0? y : gcd(y,x%y);
}
“`

>
– gcd : Greatest common divisor(最大公約数)の略
– 2入力の順序は考慮不要(xの方が小さくても大丈夫)

元記事を表示

Callable Interface in Java

What is Callable Interface in Java
For Java 5, the class “java.util.concurrent” was introduced. This callable interface was brought in via the concurrency package that looked similar to the Runnable interface. It also can return any object and is able to throw an Exception. A Java Callable interface uses Generics, thus making it possible to return any type of object. The Executor Framework gives a submit () method to execute Callable implementations in a pool of threads. In reality, the Java Exe

元記事を表示

Eclipse MicroProfile Healthに触れ合う

# はじめに
今回は、前に[Eclipse MicroProfile](https://qiita.com/omix222/items/50804e30e43085ceb912)とはで概要を紹介したEclipse MicroProfile Healthを試してみたいと思います。

# 始め方
今回も、前に[Eclipse MicroProfileの始め方](https://qiita.com/omix222/items/923d788d6ce76e179d6a)で紹介した、
[MicroProfile Starter](https://start.microprofile.io/)を使っていきます。

image.png

こちらの設定でプロジェクトを作成、ダウンロードします。

ファイル構成は以下のようになって

元記事を表示

Java (add)

Javaの勉強をしているので、備忘録としてUPします。

【add】
ArrayListに要素を追加する際に使用するメソッドである。

変数名.add()の中に追加したい値を入れて使用する。

ArrayList array = new ArrayList();

array.add(“日本語”);
array.add(“英語”);
array.add(“フランス語”);

リストの中を出力すると以下のようになる。

System.out.println(array);

日本語,英語,フランス語

この後に続けて追加すると以下のように、追加されていく。

array.add(“中国語”);
array.add(“ドイツ語”);

System.out.println(array);

日本語,英語,フランス語,中国語,ドイツ語

元記事を表示

【Java】【AtCoder】【競技プログラミング】ABC 081 B Shift only

AtCoderは, 日本発の競技プログラミングサイトとして有名です.
この記事は, 私自身が問題に取り組んだ際の,(カッコ悪い)試行錯誤の記録メモです.
参考になれば幸いです.
(AtCoderについては, けんちょん様の記事一覧をぜひご参照ください.)

# [ABC 081 B Shift only](https://atcoder.jp/contests/abc081/tasks/abc081_b)

Problem Statement:
There are $N$ positive integers written on a blackboard: $A_{1}, \cdots , A_{N}$.
Snuke can perform the following operation when all integers on the blackboard are even:
Replace each integer $X$ on the blackboard by $X$ divided by $2$.
Find the maximum possible number of ope

元記事を表示

なぜnullは良くないと言われるのか

# 前提

* nullまたはそれに当たる機能を持つ静的型付け言語の知識がある
* null非許容型、null許容非安全型、null許容安全型の定義については次の記事を参照
* [null安全の観点から見たnull非許容型、null許容非安全型、null許容安全型の比較 \- Qiita](https://qiita.com/bigwheel/items/c4d60d91b3bbd7e6e130)

# 問題

なぜnullは良くないと言われるのか

# 短い回答

nullそのものは悪くありません。
null許容非安全型も限定的な利用であれば便利なケースもあ

元記事を表示

【Java】【AtCoder】【競技プログラミング】ABC 081 Placing Marbles

AtCoderは, 日本発の競技プログラミングサイトとして有名です.
この記事は, 私自身が問題に取り組んだ際の,(カッコ悪い)試行錯誤の記録メモです.
参考になれば幸いです.
(AtCoderについては, けんちょん様の記事一覧をぜひご参照ください.)

# [ABC 081 Placing Marbles](https://atcoder.jp/contests/abc081/tasks/abc081_a)
Problem Statement
Snuke has a grid consisting of three squares numbered $1, 2$ and $3$.
In each square, either $0$ or $1$ is written. The number written in Square $i$
is $s_{i}$.
Snuke will place a marble on each square that says $1$. Find the number of squares on which Snuke will place a ma

元記事を表示

Seleniumで通信内容を全部Captureする

# はじめに
Seleniumで検証する際に、対象URLのレスポンスだけでなくそこからajaxで取得しているjson(DOMにはロードされず、遷移のパラメータにのみ使用)の内容も検証する必要があったので、色々調べて試してみました。
まとめてくれているURLも結構ありますが、断片的だったり英語だったりするので、少しは役に立つかな?と思い記録することにしました。
なお、既存テストケースを流せる既存検証ツールの拡張なので

– java限定
– Chromeのみ可 or FireFoxのみ可はNG、少なくともどちらでも、できればそれ以外でも可

である必要がありました。

# 結論
BrowserMob ProxyのEmbedded Modeでのぞき見?することにしました。というかそれ以外のやり方が分かりませんでした。のぞき見した内容はHAR形式で取得できるので、そこから抽出して検証、の流れが問題なく実行できました。

## 課題
セキュリティ例外?やらが出ます。一応検証自体はできているのでろくに見ておらずほったらかしですが、検証ツールのログチェックにひっかかるので消さないと。。。

# 考

元記事を表示

jarファイルにファイルを追加する

# 概要
できあがったjarファイルに足りないファイルがあったり、ちょっとプロパティーを変更したい場合に使う技

# jarファイルの中身を見る

ファイルを更新したい場合は、jarの中のファイルの一覧を表示して、対象のファイルのパスを確認する

“`
jar tf XXXX.jar
“`

# jarファイルにファイルを追加(更新)する

例えばlog4j.propretiesをjarのルートディレクトリに追加する方法は以下のようにする

“`
jar uvf XXXX.jar log4j.properties
“`

# jarファイルにファイルを追加(更新)する(サブディレクトリ編)

ディレクトリのサブディレクトリなどにある場合は、手元のディレクトリを掘ってファイルを配置した後にコマンドを実行する

例えば、こんな感じ。javaのファイルを更新したい場合は手元でjavaをコンパイルしてclassファイルを生成してから更新する(.javaファイルでは駄目なはず)

“`
jar uvf XXXX.jar org/apache/log4j/FileAppender.cla

元記事を表示

OTHERカテゴリの最新記事