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

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

C言語のリンクリストをオブジェクト指向風に書いてみる(PythonとJavaとのコード比較あり)

## はじめに

最近、「C言語でリンクリストを書いてみた」という投稿を2件みかけました。
いずれも、C言語らしい書き方をしておられましたので、オブジェクト指向風な書き方をコメントさせていただきました。

* [リンクリストの練習 その1 – Qiita](https://qiita.com/Kippie/items/b8a0c092b8e9c591b473)
* [C言語 再帰処理とリンクリスト構造を使った数字のリスト – Qiita](https://qiita.com/Kchan_01/items/359a63b796ea90df26ff)

オブジェクト指向風な書き方をすることで、オブジェクト指向の理解の助けになればと思い、本記事を書くことにしました。
難しいオブジェクト指向の考え方は抜きにして、構造体の拡張版=ユーザ定義型としてクラスを使います。

## リンクリスト

まず、リンクリストに使う構造体を2種類用意します。

* `struct node` : リストの要素
* `struct list` : `node`をリンクリスト管理

以下のルールでオブジェクト指向風な

元記事を表示

Java 定数の設定の仕方

– 先頭に”final”を付けて、値を設定すると、その値を変えようとしてもエラーになる。
– `final double TAX = 1.10;`

元記事を表示

IntelliJでJavaをKotlinへ変換する 〜その2〜

# はじめに

[IntelliJでJavaをKotlinへ変換する 〜その1〜](https://qiita.com/kaad/items/8292a8e53f62a61caa34)の続きです。
今回は変換をしていて**「Kotlin便利だな」**や**「スマートに書けるな」**と感じたところを紹介します。

## Source

こちらにコミットしてますので、合わせてご確認ください。
https://github.com/ken-araki/line_bot_kotlin

# java to kotlin

## Collection操作が楽

`stream`や`Lists`を使わずスマートにかけます。
今回は、以下のように書き換えました。

|java|kotlin|
|:–|:–|
|list.stream().limit(10)|list.take(10)|
|list.stream().skip(10)|list.drop(10)|
|List list = Lists.partition(list, 3)|list.chunked(3)|

ちなみに、

元記事を表示

[Java]リストをストリームとラムダ式を利用して並び替え

### リストをストリームとラムダ式を利用して並び替え
ストリームとラムダ式を利用することで、リストの並び替え処理のコーディングを減らせる

### コード例
“`java:Main.java
package sample;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
public static void main(String[] args) {
// リストの設定(addメソッドを使わない方法)
List sampleList = List.of(“Ishikari”,”Sorachi”,”Shiribeshi”,”Iburi”,”Hidaka”,”Hiyama”,”Oshima”,”Rumoi”,”Kamikawa”,”Soya”,”Tokachi”,”Kushiro”,”Okhotsk”,”Nemuro”);

// 作成したリスト samples を確認

System.out.println(sampleList);
S

元記事を表示

初心者から始めるJava、オーバーロード・コンストラクタ

#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの~~。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

##環境
言語:Java11、JDK13.0.2
動作環境:Windows10

#オーバーロード
クラスの中では、同じ名前のメソッドが同居しても構わないルールがある。
ひとつのメソッドの中で、扱う引数を無制限に増やしてもすべての引数を一度に宣言するのは難しいので、必要な機能に分けて用意した方が、クラスを使う側からしても楽になる。

“`Java:Cat.java
getCatStatus(double weight,double height){
(略)
}
getCatStatus(int age,int number){
(略)
}
getCatStatus(String name,String voice){
(略)
}
“`
このと

元記事を表示

【アルゴリズム入門】Javaでバブルソートを実装する

バブルソートを定義すると「隣接する要素の大小を比較して、昇順もしくは降順に整列するアルゴリズム」と言える。

今回は昇順に整列するアルゴリズムをjavaで実装した。
#**ソースコード**

“`BubbleSort.java

public class BubbleSort {
public static void main(String[] args) {
int[] data = {30, 60, 70, 90, 20};
sort(data);
for(int element : data) {
System.out.println(element);
}
}

public static void sort(int[] data) {
for(int i = data.length – 1; i > 0; i –)/*…⒈*/ {
for(int j = 0; j < i; j++)/*...⒉*/ { if(data[j] > data[j + 1]) {

元記事を表示

Spring (STS)のpom.xmlに記述するためのio.spring.platformの最新バージョンの確認方法

# Spring の環境構築時に使用する依存ライブラリのバージョンを調べる方法

Springの環境を構築するときに、pom.xmlの中に依存ライブラリの指定をする必要がある。その際に使用するio.spring.platformの最新バージョンが何かを調べる方法である。
調べた結果は、下記に示すpom.xmlの
<version>???</version>
のところに記述する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586772/e95085b6-827d-ac1b-0729-40850e5b14d9.png)

1. mvnrepository.comのサイトに行く。
https://mvnrepository.com/

2. 検索用のテキストボックスに「io.spring.platform」と入力してSearchボタンを押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

[Mockito] 3.2.4 → 3.3.xにアップデートしたら(イケテナイところが)エラーになった件

Mockito 3.2.4から3.3.x(3.3.3)にアップデートしたら・・・スタブを設定しているコードが冗長?だったことが原因でエラーになってしまいました。

# どんなコードだったの?

こんなコードでした。

“`java
when(rs.getInt(“column”)).thenReturn(100);
assertEquals(Integer.valueOf(100), TYPE_HANDLER.getResult(rs, “column”));

when(rs.getInt(“column”)).thenReturn(0);
assertEquals(Integer.valueOf(0), TYPE_HANDLER.getResult(rs, “column”));
“`

# どんなエラーになったの?

こんなエラーです。

“`
org.mockito.exceptions.misusing.UnnecessaryStubbingException:
Unnecessary stubbings detected.
Clean & maintaina

元記事を表示

Firebase Realtime Database を Cocos Creatorで使う。

##はじめに
初投稿です。こんにちは。
昨今ではクロスプラットフォームのゲームエンジンといえば Unity 一択で、
次点でどうにかUEが出てくる程度じゃないかと思います。
そんな中 cocos creator に手を出したのはいいものの、情報が少なく割と困ったので、備忘録がてら投稿します。

##したいこと
cocos creator で開発中のアプリで Firebase の Realtime Databaseにアクセスする。

##方法
cocos creator は Node.js を利用しているので基本的には npm を利用する。
ただし、この方法ではAndroid上では動作しなかった。(iOSやWeb上では問題ない)
仕方なくAndroid StudioでFirebase Databaseを導入し、それをJavaを通じて呼び出すという手法をとりました。

##npm install –save firebase
Cocos creator のプロジェクトフォルダでターミナル等を使って

“`
npm install –save firebase
“`
を実行する。

元記事を表示

61st聖光祭 アプリ局 AndroidJavaの教科書

# 1. AndroidStudioの操作一覧
英語さえ読めれば大丈夫だと思うが、一応まとめとく。

## 1.1 プロジェクトのつくり方
1. ホーム画面に行く。
2. `Start a new Android Studio project`をクリック
3. `Empty Activity`を選択
4. `Next`をクリック
5. `Name`を入力 (英語 全単語頭文字大文字 その他小文字 記号特殊文字禁止)
6. `Package Name`を入力 (英語 単語間は`.` 全文字小文字 特殊文字禁止)
7. `Language`は`Java`固定
8. `Minimum API level`はお好みで。(23推奨)
9. `Finish`をクリック
10. ビルドを待つ

## 1.2 画面の見方
### ファイルツリー
左にはファイルツリーが表示される。`-`ボタンで非表示に。非表示後はさらに左の`1:Project`をクリックで表示できる。

### デバッグ関係
下にはデバッグやビルドをしたときのログが表示される。実行時は勝手に表示されるので作業中は必要ないと思われ。ログ

元記事を表示

Java JAR 基礎

java初心者。
javaでjarファイルを作り、実行するまで。

##<概要>
①適当なディレクトリ作成
②適当なjavaファイル作成
③JARファイルの作成
④マニフェストファイルをいじる
⑤実行

##<詳細>
###①適当なディレクトリ作成
~/sample/

###②適当なjavaファイル作成
作業ディレクトリ:~/sample/Sample.java

“`
package sample;
public class Sample{
public static void main(String[]args){
System.out.println(“実行できた”);
}
}
“`
一回、コンパイルと実行してみる。
作業ディレクトリ:~

“`
> javac sample/Sample.java
> java sample.Sample
実行できた
“`

###③JARファイルの作成
作業ディレクトリ:~

“`
>jar -cvf Sample.jar sample/
マニフェストが追加されました
sample/を追加中です(入=0)(出

元記事を表示

Scala カスタムExecutionContextの作成

カスタムExecuitonContextを作っていきます。

## 背景

普段Futureを使う時に、なんとなくExecutionContextをDIして、implicitでFutureに渡しています。

これまでは 一つのExecutionContextをFutureに渡してElasticsearchに対して非同期処理を行っていました。
ところが、諸事情で一つのアプリケーションがElastisearchだけではなくDocumentDB(MongoDBのAWSマネージドサービス)にも、ドキュメントを参照・保存するような処理にするような修正をしなければいけなくなりました。

これまで、一つのデフォルトのExecutionContextでElasticsearchに対して非同期処理を行っていたところを、DocumentDBとの接続に対しても利用するようになりました。

共通のExecutionContextを使えれば使いたかったのですが、今回DocumentDBに関して、むやみやたらにコネクションを貼ってしまうと、待機中のスレッドが多すぎて処理しきれなくなります。(デフォルトで最大で50

元記事を表示

セミコロンレスって new FizzBuzz().say(0).say(1).say(2).say(3).say(4)… のことだと思ってた

# 解決 new FizzBuzz().say(0).say(1).say(2).say(3).say(4)は「メソッドチェーン」というのだ!
shiracamus様に教えていただきました。ありがとうございます。

—-

javaのjの字も知らなかった2、3年前のことですが、
「セミコロンレスjava」といって、セミコロンなしでFizzBuzzをやってみたりするコードがネットで公開されてました。

“`java:printやprintlnは戻り値なしだけどprintfは何故かPrintStreamを返してくれる。だからnullと比較できる
public class SemicolonLessFizzBuzz
{

SemicolonLessFizzBuzz(int j)
{
for(int i : new int[] {j})
if(System.out.printf(“%d”, i)!=null)
{
if(i%3==0)
if(System.out.printf(“fizz”)!=null)
{}else{}
if(i

元記事を表示

Java Excel設定背景色と背景画像

本論文では、Spire.XLS for Javaを使って、Excel文書に背景色と背景画像を設定する方法を紹介します。

Excel workbookの背景色を設定します

“`java

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import java.awt.*;

public class BackgroundColor{
public static void main(String[] args){
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// Excelドキュメントを読み込む
workbook.loadFromFile(“input.xlsx”);

//最初のシートを取得
Worksheet sheet = workbook.getWorksh

元記事を表示

DB接続設定をパラメータで指定するSpring Bootアプリケーション

Spring BootでDB接続を行うコマンドラインアプリケーションを作ってみた。
それ自体はよくあるアプリケーションなのだが、DBの接続情報はコマンドのパラメータで指定できるように実装されているのはあまり見かけないので実装方法を纏めておこうと思う。

## 環境

– OpenJDK 13.0.2
– Gradle 6.2.1
– Sprinig Boot 2.2.5
– Apache Commons CLI 1.4

## 初期処理

`org.springframework.boot.CommandLineRunner`インタフェースを実装したクラスを実装するとSpring Bootさんが起動処理後に呼び出してくれるらしい。

– examples.cli.MainRunner

“`
@Component
@Lazy(false)
public class MainRunner implements CommandLineRunner {

private static String HELP_MESSAGE = “java -jar cli-examples.jar

元記事を表示

JavaとJavaScriptは

JavaとJavaScriptは○○と△△ぐらい違うというネタが好きすぎるので投稿(n番煎じ)

個人的に好きなものだけ載せてます。思いつき次第追加していくつもりです。

# メロンとメロンパンぐらい違う

有名ですけど僕はあんまりこれは違いを実感できないんじゃないかと思ってます。インドとインドネシアも似た感じ。

# グレープとグレープフルーツぐらい違う

個人的に優勝しているやつです。次の点がいいです。

– JavaScriptがJavaにあやかっているようにグレープフルーツもグレープにあやかっている
– 「Javaのスクリプト」「グレープはフルーツ」みたいな言葉遊び的要素がある
– **グレープジュースを頼んでグレープフルーツジュースが出てきたら僕なら怒る** → 違いが実感しやすいし現実生活で起こりうる

# VisualStudioとVisualStudio Codeぐらい違う

「JavaはVSではないものの統合開発環境があったほうがよく、JSはVSCodeで十分」みたいな感じで対称性がよく出ているように思えます。

# GitとGitHubぐらい違う

逆にGitとGi

元記事を表示

文字列からASCIIコードの制御文字を削除する

LT;DR

Hexをbyte配列に変換して`new String(byte[])`したら0x00とか0x01とか入ってきてムキーってなったので調べた。

ASCII制御文字を文字列から除去する。

“`java:replaseAsciiCC.java
// hexからbyteに変換するのに必要。
import javax.xml.bind.DatatypeConverter;

// class定義とかmethod定義とか略

String hex = “313233343536373839302D5E5C”;

byte[] hexFromByte = DatatypeConverter.parseHexBinary(hex);
String strFromByte = new String(hexFromByte);

String resultStr strFromByte.replaceAll(“\\p{C}”, “”));

// “1234567890-^\”って出力されるはず。
System.out.println(resultStr)

元記事を表示

初心者から始めるJava、データ隠蔽

追記:2020/3/13 今回の内容は、「カプセル化」というより「データ隠蔽」の内容になっていたことをコメントで指摘していただいたので、修正。
タイトルもカプセル化からデータ隠蔽へ変更。

#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。~~
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

##環境
言語:Java11、JDK13.0.2
動作環境:Windows10

#メンバへのアクセス制限
`new`で生成したインスタンスが、クラスから引き継いだメンバ(フィールドとメソッド)を独自の形で保有していることは確認した。だが、前回の`Cat`クラスで言えば

`Cat myCat = new Cat;`
`mycat.weight = -20;`

と、`Cat`クラスを作ったときには想定していなかった値を、`main`メソッド内から勝手に格納す

元記事を表示

Spring Boot 2.0からSpring Boot 2.2にマイグレーションしたときの変更点

# はじめに

Spring Boot 2.0.2のアプリケーション(約7KL、SPAのサーバ部分)をSpring Boot 2.2.5にマイグレーションしてみたときの修正ポイントを書いておきます。

# Spring Bootの修正箇所

## Maven

JUnit5を使用していたのですが、Spring Boot 2.0ではspring-boot-starter-parentの管理下ではなかったjunit-platform-launcherとmockito-junit-jupiterが、Spring Boot 2.2では管理下になったため、バージョンの指定が不要となりました。

“`xml:SpringBoot2.0

org.junit.platform
junit-platform-launcher
1.3.1
test


<

元記事を表示

Android 基礎文法について

開発言語は、主にJavaとKotlinだと思いますが、

今回は、『Kotlin』に焦点を当て、公開していきます。

特徴としては、

■データを省略できる

例えば、以下の変数に文字列を代入するコードです。

“`
val a : String = “Hello World”
“`

さらに型推論機能によって、以下のように型指定を省略できる。

“`
val a = “Hellow World”
“`

■null安全

nullとは…何もないことを意味する特殊な値

Null許容型は、val a : String? = nullのように型名の後ろに『?』を付けるとNullを代入できます。

“`
val b : String? = null
b?.toUpperCase()
“`

補足:toUpperCase() は、String 型の変数でのみ呼び出し可能な関数です。

■クラスへのアクセスが簡潔

Javaの場合、フィールドにgetter,setterでアクセスが必要ですが、Kotilinは必要ありません。

■println関数
println関数とは、

元記事を表示

OTHERカテゴリの最新記事