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

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

ArrayListとLinkedListの違い

先日ArrayListとLinkedListの違いわかるかと聞かれて、答えることができなかったので備忘録として記事します。

## ArrayListとは
ArrayListは、内部的には配列を利用したリスト構造です。標準的な配列と異なる点は、サイズを後からでも変更できる点です。その性質上、インデックス値による値の読み書きは高速ですが、要素の挿入/削除は、配列サイズが大きくなるほど、また、操作位置が先頭に近くなるほど遅くなります。

・メリット
要素がそれぞれ順序番号を持っており、全てメモリ上でインデックス化されているため、特定の要素へすぐにアクセスすることが出来ます。

・デメリット
末尾意外の要素を足したり引いたりすると、それ以降の要素全ての順序番号を繰り上げたり繰り下げたりするための再配置処理が行われ、
その処理により ArrayList 内の要素には全て 0 から 全要素数から 1 引いた数までの全ての順序番号が付けられた要素がキレイに並び続けるのですが、処理が行われる分時間がかかってしまいます。
そしてその処理数は要素数に比例して多くなります。

| メソッド | 概要 |

元記事を表示

Java 初めての例外処理(備忘録)

#Java練習
Javaで開発をすることになり現在Javaを勉強中
[スッキリわかるJava入門 第2版 スッキリわかるシリーズ](https://www.amazon.co.jp/dp/B00MIM1KFC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)を使ってJavaの勉強。

2章2-3のアプリをアレンジしてみた。

## 2章2-3のアプリをアレンジ
[dokojavaを使用してブラウザでJavaを実行](https://dokojava.jp/execute)

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

public class Main{
public static void main(String[] args) {
System.out.println(“ようこそ占いの館へ\nあなたの名前を入力してください”);
String name = new Scanner(System.in).nextLine();

元記事を表示

PowerMockでEnumをモック化する

## 概要

PowerMockを導入すれば、Enumクラスをモック化してJUnitでテストコードを作成できます。

## 環境

| | バージョン |
| ——— | ———- |
| Java | 8 |
| JUnit | 4.12 |
| Mockito | 2.23 |
| PowerMock | 2.0.2 |

### 使用ライブラリ一覧

– byte-buddy-1.10.14.jar
– cglib-nodep-3.2.9.jar
– hamcrest-core-1.3.jar
– javassist-3.24.0-GA.jar
– junit-4.12.jar
– mockito-core-2.23.0.jar
– objenesis-3.0.1.jar
– powermock-mockito2-2.0.2-full.jar

## サンプルコード

### モック化対象クラス

“`java
public enum SampleEnum {

元記事を表示

Mockito3.4でstaticメソッドをモック化する

## 概要

Mockitoのバージョン3.4からstaticメソッドのモック化に対応しました。
これにより、staticメソッドのモック化のみならPowerMockを導入する必要はなくなりました。

## 環境

– mockito-core-3.4.0.jar
– byte-buddy-1.10.16.jar

上記jarに加え、新たに`mockito-inline`と`byte-buddy-agent`が必要になります。
– mockito-inline-3.4.0.jar
– byte-buddy-agent-1.10.16.jar

それぞれ、[Mockito公式サイト](https://site.mockito.org/)・[ByteBuddy公式サイト](https://bytebuddy.net/#/)からダウンロードできます。

| | バージョン |
| —– | ———- |
| java | 8 |
| JUnit | 5 |

## サンプルコード

### モック化対象のクラス
static

元記事を表示

Spring Cloud Gatewayを徹底解説してみる

# はじめに

> 本記事は https://tech-blog.yoshikiohashi.dev/posts/spring-cloud-gateway-explain のクロスポスト記事になります。

この記事は[Gatsby](https://www.gatsbyjs.org/)というヘッドレスCMS技術で構成されています。

# Spring Cloud Gatewayとは?

一言でいうと**「マイクロサービス向けのOAuth2認証API基盤」**になります。

[公式](https://spring.pleiades.io/projects/spring-cloud-gateway)が親切に日本語で解説してるので見てみましょう。

> このプロジェクトは、Spring MVC の上に API Gateway を構築するためのライブラリを

元記事を表示

Yellowfinの高度な関数を作成する

#目的
Yellowfin(BIツール)にはもともと用意された関数の他に、自分で関数を作って拡張できる「高度な関数」というものがあります。これまで使ったことがなく、プログラムを書かないといけないことから手を付けていなかったのですが、幾何平均を求めたいという要望があり、作ってみた感じを記事にしています。個人的には、正直公式の[Wiki](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294172)だけではなかなか理解するのが難しいところもあったのでそこをフォローできたらいいなと思います。

#はじめに
基本的な開発の始め方としては、Eclipseを使って開発するのですが、[高度な関数の基礎](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294171)を見ながら設定すれば自動的に必要なメソッドがAnalyticalFunctionからOverrideして追加されるので、その中のパラメータを設定して、必要な処理をapplyAnalyticFunct

元記事を表示

クラスとインスタンス 初心者向け Java

環境
・MacBookpro
・IntelliJ IDEA CE

Java学習中アウトプットのため投稿します。

クラスとインスタンスについて

クラス・・・設計書、骨組み
インスタンス・・・クラスを元に作られた実体

あなたは上司から大量生産猫型ロボット工場から、人間界世話型ロボットとその妹ロボットを1体ずつ作るよう指示を受けました。

上司から詳細データが渡されました。

“`
人間界世話型ロボットについて
名前:ドラ絵もん
色:青
性別:男

ドラ絵もんの妹ロボットについて
名前:ドラ美ちゃん
色:ピンク
性別:女

以上2体を作成するように。
“`

詳細データを見ると3要素が必要です。
・名前(name)
・色(color)
・性別(sex)

それではまず上司の指示通りのクラスを完成させます。

“`ruby:Robot.java

class Dora {
String name;
String color;
String sex;

Robot(String name, String color , String sex)

元記事を表示

javaでwebApi備忘録

#事前準備
・エクリプスの最新版

①eclipsのインストール方法
https://snome.jp/framework/springboot-install-win/
SpringBootの使用の前までで完了
ワークスペースのなぞ?
Eclipse はワークスペースとして指定されてディレクトリに “.metadata” という隠しディレクトリを作るので、これを検索します。
②Javaコンパイラの設定
特に設定しなくてもOK
③WEBAPIの作成方法
 サンプルを元にマーベンのPOMを変更
 https://codezine.jp/article/detail/11380?p=3
 
 ④Java Spring Boot JSONの送信と受信のサンプル
 https://itsakura.com/java-springboot-json#s7
ハローワールドの出し方
https://qiita.com/kuro227/items/d7da647e9f3be78a5f92
アクセスするURL
http://localhost:8081/hello/
リファレンスAPI スプリング
ht

元記事を表示

Docker, java, vscodeの開発環境を構築

##前回の記事
[初心者がdocker for macをインストールしてphp7.0の動作環境を用意する](https://qiita.com/RubyLrving/items/2f22ecdbabd94dff05c0)

##この記事
前回はphp7.0の動作環境を用意しました。
今回はjavaを用意してみます。
目標はdocker + java + vscode。

##参考記事
[Visual Studio CodeのRemote DevelopmentとDockerで快適な開発環境をゲット
](https://tech-lab.sios.jp/archives/18677)

##Remote Development
Remote Developmentの拡張機能をインストール

##Microsoftが公開してるテストプロジェクトのクローンを用意
“`cmd:git
git clone https://github.com/Microsoft/vscode-remote-try-java
“`

##テストプロジェクトを開く
Visual Studio Codeの左下の緑

元記事を表示

☾ Java / 繰り返し文と繰り返し制御文

 いつまでも苦手なので。

## ✴︎ 繰り返し文とは
 繰り返し処理は**ループ**とも呼び、繰り返し文には、大きく分けて**while文**、**do-while文**、**for文**の3種類があります。

### 1. while文
 **while文**は、指定された条件が成立する(条件式の結果がtrueである)間、繰り返し処理を行います。

“`Sample.java
while (条件式) {
処理文; // 条件式の結果がtrueの場合に処理文が実行される
}
“`

 処理文が1文しかない場合は、{}を省略できます。
 whileの後ろの()には、条件式を記述します。条件式は、boolean値(trueまたはfalse)になる式でなければいけません。条件判定の結果がtrueの場合、{}で囲んだ処理文が実行されます。処理文は複数行記述することができます。処理文の実行後は、また条件式に制御が移ります。

“`Sample.java
public class Sample {
public static void main(String[] ar

元記事を表示

Java のメソッドで複数の値を返す方法あれこれ (Generics, Record, Triple, Tuple, 標準ライブラリや外部ライブラリを使用)

## 概要

– Java のメソッドで複数の値を返す方法について、標準ライブラリや外部ライブラリを使用したサンプルコードを挙げる (3つの値を返すサンプルコード)

## 環境

– Java 15 (AdoptOpenJDK 15+36)
– Gradle 6.6.1
– macOS Catalina

## 使用している外部ライブラリ

– Kotlin Standard Library 1.4.10
– Scala Standard Library 2.13.3
– Apache Commons Lang 3.11
– Functional Java 4.8.1
– javatuples 1.2
– jOOλ 0.9.14
– Reactor Core 3.3.10
– Vavr 0.10.3

## 外部ライブラリを使わない方法

### 標準ライブラリ java.lang.Object[]

Object の配列に値をセットして返す。
受け取った側はキャストが必要。

“`java
public class ArraySample {

static Object[]

元記事を表示

【Java】OpenCSVでファイルの値を変換して取り込む

## 概要
JavaにはCSVファイルをBeanに取り込むためのライブラリで、OpenCSVというものがあります。[JavaのCSVライブラリ「opencsv」](https://qiita.com/sunnycloudy764/items/c117e769863dc96edc59)の記事にある通り、列名とBeanのプロパティ名を紐付けて取り込むことができます。
今回の記事は、ファイルの値を変換してBeanに取り込むときの対応を紹介します。

## 対応
[こちら](https://stackoverflow.com/questions/51155224/opencsv-wrong-date-format)のStackOverflowに書いてあるのが日付の変換例です。アノテーションの`converter`に変換用のクラスを設定して、変換します。

## 実装サンプル
文字列から日付の変換例を、実装サンプルとしてのせます。

ファイル中の`created_at`列を`LocalDateTime`型に変換します。

“`SampleCsvBean.java
public class Sa

元記事を表示

サーブレットとは?

#サーブレットが理解できないのでまとめ
サーブレットって聞くけど理解できていないのでまとめる。
jboss,tomcatコンテナの違いもよく理解できていないのでまとめる。

#サーブレットとは
WEBサーバ(バックグラウンド上)で動作する。
javaプログラム。
javaプログラムなので実行環境が必要。
それが、サーブレットコンテナ。
また、サーブレットコンテ内でhttpを受け取り、サーブレットを動作させる。
 ⚠️これが、get, post などの通信
 ⚠️HTTPは、 「Hyper Text Transfer Protocol」の略のため
   javaによらずhttp通信が行われている。(phpとか)
   javaの場合httpRequestクラスを継承しhttpサーブレットを取得し使用している。
   

#サーブレットコンテナとは
javaサーブレットを動作させるための実行環境

例として

Apache Tomcat、JBoss Application Server、Apache Geronimo、Webspehere、Jetty

+ Apache tomcat (⚠

元記事を表示

Java・ツイッタークローン・タスク管理システム⑥削除機能をつける

##はじめに
Javaを使って初めてアプリケーションを作成する人にむけて記事を書いてみようと思います。
ポートフォリオや、会社の研修課題作成の参考にしていただければ幸いです。
今回は、タスクマネージャーを作成します。
これを応用することで、ツイッタークローンの作成にも活かすことができます。

アプリケーションの機能ごとに記事を投稿していきます。
1.データベース作成
2.ログイン機能
3.タスクの登録機能
4.一覧表示
  -ソート機能
  -検索機能
5.編集機能
6.削除機能
7.排他制御について

*詳しい説明はコード内に書いてありますので、コピペする人は消して使ってください

##実行環境
eclipse4.16.0
Tomcat9
Java11
Mysql5.7

目次
1.viewの作成
2.DAOの作成
3.サーブレット作成
4.次回予告

#viewの作成

タスクの削除前にここでタスクの詳細の確認をしてもらう

“`task-delete.java
<%@ page language="java" contentType="text/html; charset=UT

元記事を表示

Java・ツイッタークローン・タスク管理システム⑤編集機能をつける

##はじめに
Javaを使って初めてアプリケーションを作成する人にむけて記事を書いてみようと思います。
ポートフォリオや、会社の研修課題作成の参考にしていただければ幸いです。
今回は、タスクマネージャーを作成します。
これを応用することで、ツイッタークローンの作成にも活かすことができます。

アプリケーションの機能ごとに記事を投稿していきます。
1.データベース作成
2.ログイン機能
3.タスクの登録機能
4.一覧表示
  -ソート機能
  -検索機能
5.編集機能
6.削除機能
7.排他制御について

*詳しい説明はコード内に書いてありますので、コピペする人は消して使ってください

##実行環境
eclipse4.16.0
Tomcat9
Java11
Mysql5.7

目次
1.viewの作成
2.DAOの作成
3.サーブレット作成
4.次回予告

#viewの作成
今回は、編集ページを作っていきます。以前記事にしたタスク登録画面に大変似ているので、簡単に確認してください。
タスク編集は、ログインユーザなら自分が投稿した物以外も編集することができるようになっております。

“`

元記事を表示

[Kotlin]IPアドレスとユーザーエージェントの取得方法

“`kotlin
import javax.servlet.http.HttpServletRequest

fun function(request: HttpServletRequest) {
val ipAddress: String = request.remoteAddr // “127.0.0.1”
val userAgent: String = request.getHeader(“user-agent”) // “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36”
}

“`

元記事を表示

【自分用】サーブレットクラスの処理の転送

【課題】乱数を発生させて、偶数が生成された場合はフォワードに、
奇数が生成された場合はリダイレクトに処理を転送する

【サーブレットクラス】

“`java

package p185;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(“/P185”)
public class P185 extends HttpServlet {
private static final long serialVersionUID = 1L;

元記事を表示

[超超初心者向け]オブジェクト指向とは

#オブジェクト指向とは

オブジェクト指向について復習する機会があったので、ここでアウトプットしておく。

今回は以下の書籍を参考に学習した。
[「スッキリわかるJava入門」 中山清喬・国本大悟 著](https://sukkiri.jp/books/sukkiri_java3)

##オブジェクト指向の定義
この書籍ではオブジェクト指向は

>ソフトウェアを開発するときに用いる**部品化の考え方**のこと

と定義されている。
ここで言う、部品というのはJavaにおけるクラスとも言いかえられる。
世の中にある部品(人物やもの)をクラスとして記述することで、それらの特徴や行動をプログラム化(
自動化)できる。

##オブジェクト指向の目的
**オブジェクト指向の目的**は、人間が把握しきれない複雑さを克服するため、つまり**「ラクして、楽しく、良いもの」を作ること**が目的である。
保守性がどうとか、再利用が上がるとかそんな難しい言葉で言われても、オブジェクト指向触れたて、プログラマー初心者にはいまいちピンと来ない。
ただ、この「ラクして、楽しく、良いもの」を作ることができれ

元記事を表示

java:日付の加算[メモ書き]

基礎::java:日付の加算。
日付の加算などはjavaはCalendarを使う方が簡単?
phpにもnew DateTimeというものがある(javaにも在る)。

“`java:demojava/demo16/Demo16.java
package demojava.demo16;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Demo16 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Date now = new Date();
SimpleDateFormat sm = new SimpleDateFormat(“yyyy/MM/dd”);

System.out.println(sm.format(now));
for(int i = 0 ;i <= 31; i++){ c

元記事を表示

Java書式付き出力[メモ書き]

format基礎 どの言語でもココらへんは普遍的かもしれません。
Java書式付き出力メモ参考。
http://www.ne.jp/asahi/hishidama/home/tech/java/formatter.html

書式付き出力とは関係ないですが、メモリの事に関して取り扱い注意が必要。
javaだから安心ともいかないよう、メモ食いあり。

“`java:demojava/demo15/Demo15.java
package demojava.demo15;

public class Demo15 {
public static void main(String[] args) {
Integer abc = 123;
for(int i = 0 ; i <10 ; i++){ System.out.println(String.format("println = %0" + (i + abc.toString().length() + 1) +"d", abc)); System.out.format("format = %0" + (i + a

元記事を表示

OTHERカテゴリの最新記事