- 投稿日:2020-01-12T23:57:34+09:00
【競技プログラミング】文字を変換する【A問題レベル】
A問題で時間くったのでメモっとく
一文字ならchar型の操作でできる
一文字次の文字に変換する
char c = 'a'; c++; System.out.println( c ); // b大文字小文字の変換
char c = 'a'; c -= 32; System.out.println( c ); // A小文字から大文字の変換は-32
大文字から小文字の変換は+32その他
引数の上で計算すると文字コードが出力されてしまうからおとなしく1行増やした方がいいかも
char c = 'a'; System.out.println( c - 32 ); // 65 System.out.println( (char)( c - 32 ) ); // A キャストすればOK躓いた問題
https://atcoder.jp/contests/abc151/tasks/abc151_a
A - Next Alphabet
問題文
zでない英小文字Cが与えられます。アルファベット順でCの次の文字を出力してください。
制約
Cはzでない英小文字
回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); char c = in.nextLine().charAt(0); System.out.println( ++c ); } }すっきり
実際の回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String c = in.nextLine(); String base = "abcdefghijklmnopqrstuvwxyz"; for( int i = 0 ; i < base.length() ; i++ ){ if( c.charAt(0) == base.charAt( i ) ){ System.out.println( base.charAt( i + 1 ) ); return; } } } }?????????????????????
ま、ままま、まぁ間違ってないし
ACだし
- 投稿日:2020-01-12T23:57:34+09:00
文字を変換したいだけだけど・・・
競プロやっててA問題で時間くったのでメモっとく
一文字ならchar型の操作でできる
一文字次の文字に変換する
char c = 'a'; c++; System.out.println( c ); // b大文字小文字の変換
char c = 'a'; c -= 32; System.out.println( c ); // A小文字から大文字の変換は-32
大文字から小文字の変換は+32その他
引数の上で計算すると文字コードが出力されてしまうからおとなしく1行増やした方がいいかも
char c = 'a'; System.out.println( c - 32 ); // 65 System.out.println( (char)( c - 32 ) ); // A キャストすればOK躓いた問題
https://atcoder.jp/contests/abc151/tasks/abc151_a
A - Next Alphabet
問題文
zでない英小文字Cが与えられます。アルファベット順でCの次の文字を出力してください。
制約
Cはzでない英小文字
回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); char c = in.nextLine().charAt(0); System.out.println( ++c ); } }すっきり
実際の回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String c = in.nextLine(); String base = "abcdefghijklmnopqrstuvwxyz"; for( int i = 0 ; i < base.length() ; i++ ){ if( c.charAt(0) == base.charAt( i ) ){ System.out.println( base.charAt( i + 1 ) ); return; } } } }?????????????????????
ま、ままま、まぁ間違ってないし
ACだし
- 投稿日:2020-01-12T23:57:34+09:00
【A問題レベル】文字を変換する
まさかのA問題で時間くったのでメモっとく
一文字ならchar型の操作でできる
一文字次の文字に変換する
char c = 'a'; c++; System.out.println( c ); // b大文字小文字の変換
char c = 'a'; c -= 32; System.out.println( c ); // A小文字から大文字の変換は-32
大文字から小文字の変換は+32その他
引数の上で計算すると文字コードが出力されてしまうからおとなしく1行増やした方がいいかも
char c = 'a'; System.out.println( c - 32 ); // 65 System.out.println( (char)( c - 32 ) ); // A キャストすればOK躓いた問題
https://atcoder.jp/contests/abc151/tasks/abc151_a
A - Next Alphabet
問題文
zでない英小文字Cが与えられます。アルファベット順でCの次の文字を出力してください。
制約
Cはzでない英小文字
回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); char c = in.nextLine().charAt(0); System.out.println( ++c ); } }すっきり
実際の回答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String c = in.nextLine(); String base = "abcdefghijklmnopqrstuvwxyz"; for( int i = 0 ; i < base.length() ; i++ ){ if( c.charAt(0) == base.charAt( i ) ){ System.out.println( base.charAt( i + 1 ) ); return; } } } }?????????????????????
- 投稿日:2020-01-12T23:40:34+09:00
NLP4J [006-030] NLP4J で言語処理100本ノック #30 形態素解析結果の読み込み
やってみます。
30. 形態素解析結果の読み込み
形態素解析結果(neko.txt.mecab)を読み込むプログラムを実装せよ.
Maven
現在開発中のバージョンを利用します。
<dependency> <groupId>org.nlp4j</groupId> <artifactId>nlp4j-core</artifactId> <version>1.1.1.0-SNAPSHOT</version> </dependency>Text Data
デフォルトで利用している形態素解析(Yahoo! Japan デベロッパーネットワーク 日本語形態素解析) では、リクエストサイズの上限が900KBであり、回数に制限もあるので小さなサイズのテキストファイルを利用しています。
一 吾輩は猫である。 名前はまだ無い。 どこで生れたかとんと見当がつかぬ。 何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。 吾輩はここで始めて人間というものを見た。 しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。 この書生というのは時々我々を捕えて煮て食うという話である。 しかしその当時は何という考もなかったから別段恐しいとも思わなかった。 ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。 掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。 この時妙なものだと思った感じが今でも残っている。 第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。 その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。 のみならず顔の真中があまりに突起している。 そうしてその穴の中から時々ぷうぷうと煙を吹く。 どうも咽せぽくて実に弱った。 これが人間の飲む煙草というものである事はようやくこの頃知った。Java Code
package nlp4j.nokku.chap4; import java.util.List; import nlp4j.Document; import nlp4j.DocumentAnnotator; import nlp4j.DocumentAnnotatorPipeline; import nlp4j.Keyword; import nlp4j.crawler.Crawler; import nlp4j.crawler.TextFileLineSeparatedCrawler; import nlp4j.impl.DefaultDocumentAnnotatorPipeline; import nlp4j.yhoo_jp.YJpMaAnnotator; public class Nokku30 { public static void main(String[] args) throws Exception { // NLP4Jが提供するテキストファイルのクローラーを利用する Crawler crawler = new TextFileLineSeparatedCrawler(); crawler.setProperty("file", "src/test/resources/nlp4j.crawler/neko_short_utf8.txt"); crawler.setProperty("encoding", "UTF-8"); crawler.setProperty("target", "text"); // ドキュメントのクロール List<Document> docs = crawler.crawlDocuments(); // NLPパイプライン(複数の処理をパイプラインとして連結することで処理する)の定義 DocumentAnnotatorPipeline pipeline = new DefaultDocumentAnnotatorPipeline(); { // Yahoo! Japan の形態素解析APIを利用するアノテーター DocumentAnnotator annotator = new YJpMaAnnotator(); pipeline.add(annotator); } // アノテーション処理の実行 pipeline.annotate(docs); for (Document doc : docs) { // 本文 System.err.println(doc.getText()); for (Keyword kwd : doc.getKeywords()) { System.err.println(" - " + kwd.toString()); } } } }結果
一 - 1 [sequence=1, facet=名詞, lex=1, str=一, reading=1, count=-1, begin=0, end=1, correlation=0.0] 吾輩は猫である。 - [sequence=1, facet=特殊, lex= , str= , reading= , count=-1, begin=0, end=1, correlation=0.0] - 吾輩は猫である [sequence=2, facet=名詞, lex=吾輩は猫である, str=吾輩は猫である, reading=わがはいはねこである, count=-1, begin=1, end=8, correlation=0.0] - 。 [sequence=3, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=8, end=9, correlation=0.0] 名前はまだ無い。 - 名前 [sequence=1, facet=名詞, lex=名前, str=名前, reading=なまえ, count=-1, begin=0, end=2, correlation=0.0] - は [sequence=2, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=2, end=3, correlation=0.0] - まだ [sequence=3, facet=副詞, lex=まだ, str=まだ, reading=まだ, count=-1, begin=3, end=5, correlation=0.0] - 無い [sequence=4, facet=形容詞, lex=無い, str=無い, reading=ない, count=-1, begin=5, end=7, correlation=0.0] - 。 [sequence=5, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=7, end=8, correlation=0.0] どこで生れたかとんと見当がつかぬ。 - [sequence=1, facet=特殊, lex= , str= , reading= , count=-1, begin=0, end=1, correlation=0.0] - どこ [sequence=2, facet=名詞, lex=どこ, str=どこ, reading=どこ, count=-1, begin=1, end=3, correlation=0.0] - で [sequence=3, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=3, end=4, correlation=0.0] - 生れる [sequence=4, facet=動詞, lex=生れる, str=生れ, reading=うまれ, count=-1, begin=4, end=6, correlation=0.0] - た [sequence=5, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=6, end=7, correlation=0.0] - か [sequence=6, facet=助詞, lex=か, str=か, reading=か, count=-1, begin=7, end=8, correlation=0.0] - とんと [sequence=7, facet=副詞, lex=とんと, str=とんと, reading=とんと, count=-1, begin=8, end=11, correlation=0.0] - 見当 [sequence=8, facet=名詞, lex=見当, str=見当, reading=けんとう, count=-1, begin=11, end=13, correlation=0.0] - が [sequence=9, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=13, end=14, correlation=0.0] - つく [sequence=10, facet=動詞, lex=つく, str=つか, reading=つか, count=-1, begin=14, end=16, correlation=0.0] - ぬ [sequence=11, facet=助動詞, lex=ぬ, str=ぬ, reading=ぬ, count=-1, begin=16, end=17, correlation=0.0] - 。 [sequence=12, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=17, end=18, correlation=0.0] 何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。 - 何でも [sequence=1, facet=副詞, lex=何でも, str=何でも, reading=なんでも, count=-1, begin=0, end=3, correlation=0.0] - 薄暗い [sequence=2, facet=形容詞, lex=薄暗い, str=薄暗い, reading=うすぐらい, count=-1, begin=3, end=6, correlation=0.0] - じめじめ [sequence=3, facet=副詞, lex=じめじめ, str=じめじめ, reading=じめじめ, count=-1, begin=6, end=10, correlation=0.0] - する [sequence=4, facet=動詞, lex=する, str=し, reading=し, count=-1, begin=10, end=11, correlation=0.0] - た [sequence=5, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=11, end=12, correlation=0.0] - 所 [sequence=6, facet=名詞, lex=所, str=所, reading=ところ, count=-1, begin=12, end=13, correlation=0.0] - で [sequence=7, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=13, end=14, correlation=0.0] - ニャーニャー [sequence=8, facet=副詞, lex=ニャーニャー, str=ニャーニャー, reading=にゃーにゃー, count=-1, begin=14, end=20, correlation=0.0] - 泣く [sequence=9, facet=動詞, lex=泣く, str=泣い, reading=ない, count=-1, begin=20, end=22, correlation=0.0] - て [sequence=10, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=22, end=23, correlation=0.0] - いる [sequence=11, facet=助動詞, lex=いる, str=い, reading=い, count=-1, begin=23, end=24, correlation=0.0] - た [sequence=12, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=24, end=25, correlation=0.0] - 事 [sequence=13, facet=名詞, lex=事, str=事, reading=こと, count=-1, begin=25, end=26, correlation=0.0] - だけ [sequence=14, facet=助詞, lex=だけ, str=だけ, reading=だけ, count=-1, begin=26, end=28, correlation=0.0] - は [sequence=15, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=28, end=29, correlation=0.0] - 記憶 [sequence=16, facet=名詞, lex=記憶, str=記憶, reading=きおく, count=-1, begin=29, end=31, correlation=0.0] - する [sequence=17, facet=助動詞, lex=する, str=し, reading=し, count=-1, begin=31, end=32, correlation=0.0] - て [sequence=18, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=32, end=33, correlation=0.0] - いる [sequence=19, facet=助動詞, lex=いる, str=いる, reading=いる, count=-1, begin=33, end=35, correlation=0.0] - 。 [sequence=20, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=35, end=36, correlation=0.0] 吾輩はここで始めて人間というものを見た。 - 吾輩 [sequence=1, facet=名詞, lex=吾輩, str=吾輩, reading=わがはい, count=-1, begin=0, end=2, correlation=0.0] - は [sequence=2, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=2, end=3, correlation=0.0] - ここ [sequence=3, facet=名詞, lex=ここ, str=ここ, reading=ここ, count=-1, begin=3, end=5, correlation=0.0] - で [sequence=4, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=5, end=6, correlation=0.0] - 始める [sequence=5, facet=動詞, lex=始める, str=始め, reading=はじめ, count=-1, begin=6, end=8, correlation=0.0] - て [sequence=6, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=8, end=9, correlation=0.0] - 人間 [sequence=7, facet=名詞, lex=人間, str=人間, reading=にんげん, count=-1, begin=9, end=11, correlation=0.0] - と [sequence=8, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=11, end=12, correlation=0.0] - いう [sequence=9, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=12, end=14, correlation=0.0] - もの [sequence=10, facet=名詞, lex=もの, str=もの, reading=もの, count=-1, begin=14, end=16, correlation=0.0] - を [sequence=11, facet=助詞, lex=を, str=を, reading=を, count=-1, begin=16, end=17, correlation=0.0] - 見る [sequence=12, facet=動詞, lex=見る, str=見, reading=み, count=-1, begin=17, end=18, correlation=0.0] - た [sequence=13, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=18, end=19, correlation=0.0] - 。 [sequence=14, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=19, end=20, correlation=0.0] しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。 - しかも [sequence=1, facet=接続詞, lex=しかも, str=しかも, reading=しかも, count=-1, begin=0, end=3, correlation=0.0] - あと [sequence=2, facet=名詞, lex=あと, str=あと, reading=あと, count=-1, begin=3, end=5, correlation=0.0] - で [sequence=3, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=5, end=6, correlation=0.0] - 聞く [sequence=4, facet=動詞, lex=聞く, str=聞く, reading=きく, count=-1, begin=6, end=8, correlation=0.0] - と [sequence=5, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=8, end=9, correlation=0.0] - それ [sequence=6, facet=名詞, lex=それ, str=それ, reading=それ, count=-1, begin=9, end=11, correlation=0.0] - は [sequence=7, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=11, end=12, correlation=0.0] - 書生 [sequence=8, facet=名詞, lex=書生, str=書生, reading=しょせい, count=-1, begin=12, end=14, correlation=0.0] - と [sequence=9, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=14, end=15, correlation=0.0] - いう [sequence=10, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=15, end=17, correlation=0.0] - 人間 [sequence=11, facet=名詞, lex=人間, str=人間, reading=にんげん, count=-1, begin=17, end=19, correlation=0.0] - 中 [sequence=12, facet=接尾辞, lex=中, str=中, reading=ちゅう, count=-1, begin=19, end=20, correlation=0.0] - で [sequence=13, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=20, end=21, correlation=0.0] - 一番 [sequence=14, facet=副詞, lex=一番, str=一番, reading=いちばん, count=-1, begin=21, end=23, correlation=0.0] - 獰悪 [sequence=15, facet=名詞, lex=獰悪, str=獰悪, reading=どうあく, count=-1, begin=23, end=25, correlation=0.0] - だ [sequence=16, facet=助動詞, lex=だ, str=な, reading=な, count=-1, begin=25, end=26, correlation=0.0] - 種族 [sequence=17, facet=名詞, lex=種族, str=種族, reading=しゅぞく, count=-1, begin=26, end=28, correlation=0.0] - だ [sequence=18, facet=助動詞, lex=だ, str=で, reading=で, count=-1, begin=28, end=29, correlation=0.0] - ある [sequence=19, facet=助動詞, lex=ある, str=あっ, reading=あっ, count=-1, begin=29, end=31, correlation=0.0] - た [sequence=20, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=31, end=32, correlation=0.0] - そう [sequence=21, facet=助詞, lex=そう, str=そう, reading=そう, count=-1, begin=32, end=34, correlation=0.0] - だ [sequence=22, facet=助動詞, lex=だ, str=だ, reading=だ, count=-1, begin=34, end=35, correlation=0.0] - 。 [sequence=23, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=35, end=36, correlation=0.0] この書生というのは時々我々を捕えて煮て食うという話である。 - この [sequence=1, facet=連体詞, lex=この, str=この, reading=この, count=-1, begin=0, end=2, correlation=0.0] - 書生 [sequence=2, facet=名詞, lex=書生, str=書生, reading=しょせい, count=-1, begin=2, end=4, correlation=0.0] - と [sequence=3, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=4, end=5, correlation=0.0] - いう [sequence=4, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=5, end=7, correlation=0.0] - の [sequence=5, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=7, end=8, correlation=0.0] - は [sequence=6, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=8, end=9, correlation=0.0] - 時々 [sequence=7, facet=名詞, lex=時々, str=時々, reading=ときどき, count=-1, begin=9, end=11, correlation=0.0] - 我々 [sequence=8, facet=名詞, lex=我々, str=我々, reading=われわれ, count=-1, begin=11, end=13, correlation=0.0] - を [sequence=9, facet=助詞, lex=を, str=を, reading=を, count=-1, begin=13, end=14, correlation=0.0] - 捕える [sequence=10, facet=動詞, lex=捕える, str=捕え, reading=とらえ, count=-1, begin=14, end=16, correlation=0.0] - て [sequence=11, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=16, end=17, correlation=0.0] - 煮る [sequence=12, facet=動詞, lex=煮る, str=煮, reading=に, count=-1, begin=17, end=18, correlation=0.0] - て [sequence=13, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=18, end=19, correlation=0.0] - 食う [sequence=14, facet=動詞, lex=食う, str=食う, reading=くう, count=-1, begin=19, end=21, correlation=0.0] - と [sequence=15, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=21, end=22, correlation=0.0] - いう [sequence=16, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=22, end=24, correlation=0.0] - 話 [sequence=17, facet=名詞, lex=話, str=話, reading=はなし, count=-1, begin=24, end=25, correlation=0.0] - だ [sequence=18, facet=助動詞, lex=だ, str=で, reading=で, count=-1, begin=25, end=26, correlation=0.0] - ある [sequence=19, facet=助動詞, lex=ある, str=ある, reading=ある, count=-1, begin=26, end=28, correlation=0.0] - 。 [sequence=20, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=28, end=29, correlation=0.0] しかしその当時は何という考もなかったから別段恐しいとも思わなかった。 - しかし [sequence=1, facet=接続詞, lex=しかし, str=しかし, reading=しかし, count=-1, begin=0, end=3, correlation=0.0] - その [sequence=2, facet=連体詞, lex=その, str=その, reading=その, count=-1, begin=3, end=5, correlation=0.0] - 当時 [sequence=3, facet=名詞, lex=当時, str=当時, reading=とうじ, count=-1, begin=5, end=7, correlation=0.0] - は [sequence=4, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=7, end=8, correlation=0.0] - 何という [sequence=5, facet=連体詞, lex=何という, str=何という, reading=なんという, count=-1, begin=8, end=12, correlation=0.0] - 考 [sequence=6, facet=名詞, lex=考, str=考, reading=かんがえ, count=-1, begin=12, end=13, correlation=0.0] - も [sequence=7, facet=助詞, lex=も, str=も, reading=も, count=-1, begin=13, end=14, correlation=0.0] - ない [sequence=8, facet=形容詞, lex=ない, str=なかっ, reading=なかっ, count=-1, begin=14, end=17, correlation=0.0] - た [sequence=9, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=17, end=18, correlation=0.0] - から [sequence=10, facet=助詞, lex=から, str=から, reading=から, count=-1, begin=18, end=20, correlation=0.0] - 別段 [sequence=11, facet=副詞, lex=別段, str=別段, reading=べつだん, count=-1, begin=20, end=22, correlation=0.0] - 恐い [sequence=12, facet=形容詞, lex=恐い, str=恐し, reading=こわし, count=-1, begin=22, end=24, correlation=0.0] - いとも [sequence=13, facet=副詞, lex=いとも, str=いとも, reading=いとも, count=-1, begin=24, end=27, correlation=0.0] - 思う [sequence=14, facet=動詞, lex=思う, str=思わ, reading=おもわ, count=-1, begin=27, end=29, correlation=0.0] - ない [sequence=15, facet=助動詞, lex=ない, str=なかっ, reading=なかっ, count=-1, begin=29, end=32, correlation=0.0] - た [sequence=16, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=32, end=33, correlation=0.0] - 。 [sequence=17, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=33, end=34, correlation=0.0] ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。 - ただ [sequence=1, facet=接続詞, lex=ただ, str=ただ, reading=ただ, count=-1, begin=0, end=2, correlation=0.0] - 彼 [sequence=2, facet=名詞, lex=彼, str=彼, reading=かれ, count=-1, begin=2, end=3, correlation=0.0] - の [sequence=3, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=3, end=4, correlation=0.0] - 掌 [sequence=4, facet=名詞, lex=掌, str=掌, reading=てのひら, count=-1, begin=4, end=5, correlation=0.0] - に [sequence=5, facet=助詞, lex=に, str=に, reading=に, count=-1, begin=5, end=6, correlation=0.0] - 載せる [sequence=6, facet=動詞, lex=載せる, str=載せ, reading=のせ, count=-1, begin=6, end=8, correlation=0.0] - られる [sequence=7, facet=助動詞, lex=られる, str=られ, reading=られ, count=-1, begin=8, end=10, correlation=0.0] - て [sequence=8, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=10, end=11, correlation=0.0] - スー [sequence=9, facet=名詞, lex=スー, str=スー, reading=すー, count=-1, begin=11, end=13, correlation=0.0] - と [sequence=10, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=13, end=14, correlation=0.0] - 持ち上げる [sequence=11, facet=動詞, lex=持ち上げる, str=持ち上げ, reading=もちあげ, count=-1, begin=14, end=18, correlation=0.0] - られる [sequence=12, facet=助動詞, lex=られる, str=られ, reading=られ, count=-1, begin=18, end=20, correlation=0.0] - た [sequence=13, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=20, end=21, correlation=0.0] - 時 [sequence=14, facet=名詞, lex=時, str=時, reading=とき, count=-1, begin=21, end=22, correlation=0.0] - 何だか [sequence=15, facet=副詞, lex=何だか, str=何だか, reading=なんだか, count=-1, begin=22, end=25, correlation=0.0] - フワフワ [sequence=16, facet=副詞, lex=フワフワ, str=フワフワ, reading=ふわふわ, count=-1, begin=25, end=29, correlation=0.0] - する [sequence=17, facet=動詞, lex=する, str=し, reading=し, count=-1, begin=29, end=30, correlation=0.0] - た [sequence=18, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=30, end=31, correlation=0.0] - 感じ [sequence=19, facet=名詞, lex=感じ, str=感じ, reading=かんじ, count=-1, begin=31, end=33, correlation=0.0] - が [sequence=20, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=33, end=34, correlation=0.0] - ある [sequence=21, facet=動詞, lex=ある, str=あっ, reading=あっ, count=-1, begin=34, end=36, correlation=0.0] - た [sequence=22, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=36, end=37, correlation=0.0] - ばかり [sequence=23, facet=助詞, lex=ばかり, str=ばかり, reading=ばかり, count=-1, begin=37, end=40, correlation=0.0] - だ [sequence=24, facet=助動詞, lex=だ, str=で, reading=で, count=-1, begin=40, end=41, correlation=0.0] - ある [sequence=25, facet=助動詞, lex=ある, str=ある, reading=ある, count=-1, begin=41, end=43, correlation=0.0] - 。 [sequence=26, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=43, end=44, correlation=0.0] 掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。 - 掌 [sequence=1, facet=名詞, lex=掌, str=掌, reading=てのひら, count=-1, begin=0, end=1, correlation=0.0] - の [sequence=2, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=1, end=2, correlation=0.0] - 上 [sequence=3, facet=名詞, lex=上, str=上, reading=うえ, count=-1, begin=2, end=3, correlation=0.0] - で [sequence=4, facet=助詞, lex=で, str=で, reading=で, count=-1, begin=3, end=4, correlation=0.0] - 少し [sequence=5, facet=名詞, lex=少し, str=少し, reading=すこし, count=-1, begin=4, end=6, correlation=0.0] - 落ちつく [sequence=6, facet=動詞, lex=落ちつく, str=落ちつい, reading=おちつい, count=-1, begin=6, end=10, correlation=0.0] - て [sequence=7, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=10, end=11, correlation=0.0] - 書生 [sequence=8, facet=名詞, lex=書生, str=書生, reading=しょせい, count=-1, begin=11, end=13, correlation=0.0] - の [sequence=9, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=13, end=14, correlation=0.0] - 顔 [sequence=10, facet=名詞, lex=顔, str=顔, reading=かお, count=-1, begin=14, end=15, correlation=0.0] - を [sequence=11, facet=助詞, lex=を, str=を, reading=を, count=-1, begin=15, end=16, correlation=0.0] - 見る [sequence=12, facet=動詞, lex=見る, str=見, reading=み, count=-1, begin=16, end=17, correlation=0.0] - た [sequence=13, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=17, end=18, correlation=0.0] - の [sequence=14, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=18, end=19, correlation=0.0] - が [sequence=15, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=19, end=20, correlation=0.0] - いわゆる [sequence=16, facet=連体詞, lex=いわゆる, str=いわゆる, reading=いわゆる, count=-1, begin=20, end=24, correlation=0.0] - 人間 [sequence=17, facet=名詞, lex=人間, str=人間, reading=にんげん, count=-1, begin=24, end=26, correlation=0.0] - と [sequence=18, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=26, end=27, correlation=0.0] - いう [sequence=19, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=27, end=29, correlation=0.0] - ものの [sequence=20, facet=助詞, lex=ものの, str=ものの, reading=ものの, count=-1, begin=29, end=32, correlation=0.0] - 見始 [sequence=21, facet=名詞, lex=見始, str=見始, reading=みはじめ, count=-1, begin=32, end=34, correlation=0.0] - だ [sequence=22, facet=助動詞, lex=だ, str=で, reading=で, count=-1, begin=34, end=35, correlation=0.0] - ある [sequence=23, facet=助動詞, lex=ある, str=あろ, reading=あろ, count=-1, begin=35, end=37, correlation=0.0] - う [sequence=24, facet=助動詞, lex=う, str=う, reading=う, count=-1, begin=37, end=38, correlation=0.0] - 。 [sequence=25, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=38, end=39, correlation=0.0] この時妙なものだと思った感じが今でも残っている。 - この [sequence=1, facet=連体詞, lex=この, str=この, reading=この, count=-1, begin=0, end=2, correlation=0.0] - 時 [sequence=2, facet=名詞, lex=時, str=時, reading=とき, count=-1, begin=2, end=3, correlation=0.0] - 妙 [sequence=3, facet=名詞, lex=妙, str=妙, reading=みょう, count=-1, begin=3, end=4, correlation=0.0] - だ [sequence=4, facet=助動詞, lex=だ, str=な, reading=な, count=-1, begin=4, end=5, correlation=0.0] - もの [sequence=5, facet=名詞, lex=もの, str=もの, reading=もの, count=-1, begin=5, end=7, correlation=0.0] - だ [sequence=6, facet=助動詞, lex=だ, str=だ, reading=だ, count=-1, begin=7, end=8, correlation=0.0] - と [sequence=7, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=8, end=9, correlation=0.0] - 思う [sequence=8, facet=動詞, lex=思う, str=思っ, reading=おもっ, count=-1, begin=9, end=11, correlation=0.0] - た [sequence=9, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=11, end=12, correlation=0.0] - 感じ [sequence=10, facet=名詞, lex=感じ, str=感じ, reading=かんじ, count=-1, begin=12, end=14, correlation=0.0] - が [sequence=11, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=14, end=15, correlation=0.0] - 今 [sequence=12, facet=名詞, lex=今, str=今, reading=いま, count=-1, begin=15, end=16, correlation=0.0] - でも [sequence=13, facet=助詞, lex=でも, str=でも, reading=でも, count=-1, begin=16, end=18, correlation=0.0] - 残る [sequence=14, facet=動詞, lex=残る, str=残っ, reading=のこっ, count=-1, begin=18, end=20, correlation=0.0] - て [sequence=15, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=20, end=21, correlation=0.0] - いる [sequence=16, facet=助動詞, lex=いる, str=いる, reading=いる, count=-1, begin=21, end=23, correlation=0.0] - 。 [sequence=17, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=23, end=24, correlation=0.0] 第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。 - 第 [sequence=1, facet=接頭辞, lex=第, str=第, reading=だい, count=-1, begin=0, end=1, correlation=0.0] - 1 [sequence=2, facet=名詞, lex=1, str=一, reading=1, count=-1, begin=1, end=2, correlation=0.0] - 毛 [sequence=3, facet=接尾辞, lex=毛, str=毛, reading=もう, count=-1, begin=2, end=3, correlation=0.0] - を [sequence=4, facet=助詞, lex=を, str=を, reading=を, count=-1, begin=3, end=4, correlation=0.0] - もつ [sequence=5, facet=動詞, lex=もつ, str=もっ, reading=もっ, count=-1, begin=4, end=6, correlation=0.0] - て [sequence=6, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=6, end=7, correlation=0.0] - 装飾 [sequence=7, facet=名詞, lex=装飾, str=装飾, reading=そうしょく, count=-1, begin=7, end=9, correlation=0.0] - する [sequence=8, facet=助動詞, lex=する, str=さ, reading=さ, count=-1, begin=9, end=10, correlation=0.0] - れる [sequence=9, facet=助動詞, lex=れる, str=れ, reading=れ, count=-1, begin=10, end=11, correlation=0.0] - べし [sequence=10, facet=助動詞, lex=べし, str=べき, reading=べき, count=-1, begin=11, end=13, correlation=0.0] - はず [sequence=11, facet=名詞, lex=はず, str=はず, reading=はず, count=-1, begin=13, end=15, correlation=0.0] - の [sequence=12, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=15, end=16, correlation=0.0] - 顔 [sequence=13, facet=名詞, lex=顔, str=顔, reading=かお, count=-1, begin=16, end=17, correlation=0.0] - が [sequence=14, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=17, end=18, correlation=0.0] - つるつる [sequence=15, facet=副詞, lex=つるつる, str=つるつる, reading=つるつる, count=-1, begin=18, end=22, correlation=0.0] - する [sequence=16, facet=動詞, lex=する, str=し, reading=し, count=-1, begin=22, end=23, correlation=0.0] - て [sequence=17, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=23, end=24, correlation=0.0] - まるで [sequence=18, facet=副詞, lex=まるで, str=まるで, reading=まるで, count=-1, begin=24, end=27, correlation=0.0] - 薬缶 [sequence=19, facet=名詞, lex=薬缶, str=薬缶, reading=やかん, count=-1, begin=27, end=29, correlation=0.0] - だ [sequence=20, facet=助動詞, lex=だ, str=だ, reading=だ, count=-1, begin=29, end=30, correlation=0.0] - 。 [sequence=21, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=30, end=31, correlation=0.0] その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。 - その [sequence=1, facet=連体詞, lex=その, str=その, reading=その, count=-1, begin=0, end=2, correlation=0.0] - 後 [sequence=2, facet=名詞, lex=後, str=後, reading=あと, count=-1, begin=2, end=3, correlation=0.0] - 猫 [sequence=3, facet=名詞, lex=猫, str=猫, reading=ねこ, count=-1, begin=3, end=4, correlation=0.0] - に [sequence=4, facet=助詞, lex=に, str=に, reading=に, count=-1, begin=4, end=5, correlation=0.0] - も [sequence=5, facet=助詞, lex=も, str=も, reading=も, count=-1, begin=5, end=6, correlation=0.0] - だいぶ [sequence=6, facet=副詞, lex=だいぶ, str=だいぶ, reading=だいぶ, count=-1, begin=6, end=9, correlation=0.0] - 逢う [sequence=7, facet=動詞, lex=逢う, str=逢っ, reading=あっ, count=-1, begin=9, end=11, correlation=0.0] - た [sequence=8, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=11, end=12, correlation=0.0] - が [sequence=9, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=12, end=13, correlation=0.0] - こんな [sequence=10, facet=形容動詞, lex=こんな, str=こんな, reading=こんな, count=-1, begin=13, end=16, correlation=0.0] - 片輪 [sequence=11, facet=名詞, lex=片輪, str=片輪, reading=かたりん, count=-1, begin=16, end=18, correlation=0.0] - に [sequence=12, facet=助詞, lex=に, str=に, reading=に, count=-1, begin=18, end=19, correlation=0.0] - は [sequence=13, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=19, end=20, correlation=0.0] - 一度 [sequence=14, facet=名詞, lex=一度, str=一度, reading=いちど, count=-1, begin=20, end=22, correlation=0.0] - も [sequence=15, facet=助詞, lex=も, str=も, reading=も, count=-1, begin=22, end=23, correlation=0.0] - 出会う [sequence=16, facet=動詞, lex=出会う, str=出会わ, reading=であわ, count=-1, begin=23, end=26, correlation=0.0] - する [sequence=17, facet=助動詞, lex=する, str=し, reading=し, count=-1, begin=26, end=27, correlation=0.0] - た [sequence=18, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=27, end=28, correlation=0.0] - 事 [sequence=19, facet=名詞, lex=事, str=事, reading=こと, count=-1, begin=28, end=29, correlation=0.0] - が [sequence=20, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=29, end=30, correlation=0.0] - ない [sequence=21, facet=形容詞, lex=ない, str=ない, reading=ない, count=-1, begin=30, end=32, correlation=0.0] - 。 [sequence=22, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=32, end=33, correlation=0.0] のみならず顔の真中があまりに突起している。 - のみならず [sequence=1, facet=接続詞, lex=のみならず, str=のみならず, reading=のみならず, count=-1, begin=0, end=5, correlation=0.0] - 顔 [sequence=2, facet=名詞, lex=顔, str=顔, reading=かお, count=-1, begin=5, end=6, correlation=0.0] - の [sequence=3, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=6, end=7, correlation=0.0] - 真中 [sequence=4, facet=名詞, lex=真中, str=真中, reading=まんなか, count=-1, begin=7, end=9, correlation=0.0] - が [sequence=5, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=9, end=10, correlation=0.0] - あまり [sequence=6, facet=副詞, lex=あまり, str=あまり, reading=あまり, count=-1, begin=10, end=13, correlation=0.0] - に [sequence=7, facet=助詞, lex=に, str=に, reading=に, count=-1, begin=13, end=14, correlation=0.0] - 突起 [sequence=8, facet=名詞, lex=突起, str=突起, reading=とっき, count=-1, begin=14, end=16, correlation=0.0] - する [sequence=9, facet=助動詞, lex=する, str=し, reading=し, count=-1, begin=16, end=17, correlation=0.0] - て [sequence=10, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=17, end=18, correlation=0.0] - いる [sequence=11, facet=助動詞, lex=いる, str=いる, reading=いる, count=-1, begin=18, end=20, correlation=0.0] - 。 [sequence=12, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=20, end=21, correlation=0.0] そうしてその穴の中から時々ぷうぷうと煙を吹く。 - そう [sequence=1, facet=副詞, lex=そう, str=そう, reading=そう, count=-1, begin=0, end=2, correlation=0.0] - する [sequence=2, facet=動詞, lex=する, str=し, reading=し, count=-1, begin=2, end=3, correlation=0.0] - て [sequence=3, facet=助詞, lex=て, str=て, reading=て, count=-1, begin=3, end=4, correlation=0.0] - その [sequence=4, facet=連体詞, lex=その, str=その, reading=その, count=-1, begin=4, end=6, correlation=0.0] - 穴 [sequence=5, facet=名詞, lex=穴, str=穴, reading=あな, count=-1, begin=6, end=7, correlation=0.0] - の [sequence=6, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=7, end=8, correlation=0.0] - 中 [sequence=7, facet=名詞, lex=中, str=中, reading=なか, count=-1, begin=8, end=9, correlation=0.0] - から [sequence=8, facet=助詞, lex=から, str=から, reading=から, count=-1, begin=9, end=11, correlation=0.0] - 時々 [sequence=9, facet=名詞, lex=時々, str=時々, reading=ときどき, count=-1, begin=11, end=13, correlation=0.0] - ぷう [sequence=10, facet=名詞, lex=ぷう, str=ぷう, reading=ぷう, count=-1, begin=13, end=15, correlation=0.0] - ぷう [sequence=11, facet=名詞, lex=ぷう, str=ぷう, reading=ぷう, count=-1, begin=13, end=15, correlation=0.0] - と [sequence=12, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=17, end=18, correlation=0.0] - 煙 [sequence=13, facet=名詞, lex=煙, str=煙, reading=けむり, count=-1, begin=18, end=19, correlation=0.0] - を [sequence=14, facet=助詞, lex=を, str=を, reading=を, count=-1, begin=19, end=20, correlation=0.0] - 吹く [sequence=15, facet=動詞, lex=吹く, str=吹く, reading=ふく, count=-1, begin=20, end=22, correlation=0.0] - 。 [sequence=16, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=22, end=23, correlation=0.0] どうも咽せぽくて実に弱った。 - どう [sequence=1, facet=副詞, lex=どう, str=どう, reading=どう, count=-1, begin=0, end=2, correlation=0.0] - も [sequence=2, facet=助詞, lex=も, str=も, reading=も, count=-1, begin=2, end=3, correlation=0.0] - 咽せる [sequence=3, facet=動詞, lex=咽せる, str=咽せ, reading=むせ, count=-1, begin=3, end=5, correlation=0.0] - ぽ [sequence=4, facet=特殊, lex=ぽ, str=ぽ, reading=ぽ, count=-1, begin=5, end=6, correlation=0.0] - くう [sequence=5, facet=動詞, lex=くう, str=く, reading=く, count=-1, begin=6, end=7, correlation=0.0] - てる [sequence=6, facet=助動詞, lex=てる, str=て, reading=て, count=-1, begin=7, end=8, correlation=0.0] - 実に [sequence=7, facet=副詞, lex=実に, str=実に, reading=じつに, count=-1, begin=8, end=10, correlation=0.0] - 弱る [sequence=8, facet=動詞, lex=弱る, str=弱っ, reading=よわっ, count=-1, begin=10, end=12, correlation=0.0] - た [sequence=9, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=12, end=13, correlation=0.0] - 。 [sequence=10, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=13, end=14, correlation=0.0] これが人間の飲む煙草というものである事はようやくこの頃知った。 - これ [sequence=1, facet=名詞, lex=これ, str=これ, reading=これ, count=-1, begin=0, end=2, correlation=0.0] - が [sequence=2, facet=助詞, lex=が, str=が, reading=が, count=-1, begin=2, end=3, correlation=0.0] - 人間 [sequence=3, facet=名詞, lex=人間, str=人間, reading=にんげん, count=-1, begin=3, end=5, correlation=0.0] - の [sequence=4, facet=助詞, lex=の, str=の, reading=の, count=-1, begin=5, end=6, correlation=0.0] - 飲む [sequence=5, facet=動詞, lex=飲む, str=飲む, reading=のむ, count=-1, begin=6, end=8, correlation=0.0] - 煙草 [sequence=6, facet=名詞, lex=煙草, str=煙草, reading=たばこ, count=-1, begin=8, end=10, correlation=0.0] - と [sequence=7, facet=助詞, lex=と, str=と, reading=と, count=-1, begin=10, end=11, correlation=0.0] - いう [sequence=8, facet=動詞, lex=いう, str=いう, reading=いう, count=-1, begin=11, end=13, correlation=0.0] - もの [sequence=9, facet=名詞, lex=もの, str=もの, reading=もの, count=-1, begin=13, end=15, correlation=0.0] - だ [sequence=10, facet=助動詞, lex=だ, str=で, reading=で, count=-1, begin=15, end=16, correlation=0.0] - ある [sequence=11, facet=助動詞, lex=ある, str=ある, reading=ある, count=-1, begin=16, end=18, correlation=0.0] - 事 [sequence=12, facet=名詞, lex=事, str=事, reading=こと, count=-1, begin=18, end=19, correlation=0.0] - は [sequence=13, facet=助詞, lex=は, str=は, reading=は, count=-1, begin=19, end=20, correlation=0.0] - ようやく [sequence=14, facet=副詞, lex=ようやく, str=ようやく, reading=ようやく, count=-1, begin=20, end=24, correlation=0.0] - この [sequence=15, facet=連体詞, lex=この, str=この, reading=この, count=-1, begin=24, end=26, correlation=0.0] - 頃 [sequence=16, facet=名詞, lex=頃, str=頃, reading=ころ, count=-1, begin=26, end=27, correlation=0.0] - 知る [sequence=17, facet=動詞, lex=知る, str=知っ, reading=しっ, count=-1, begin=27, end=29, correlation=0.0] - た [sequence=18, facet=助動詞, lex=た, str=た, reading=た, count=-1, begin=29, end=30, correlation=0.0] - 。 [sequence=19, facet=特殊, lex=。, str=。, reading=。, count=-1, begin=30, end=31, correlation=0.0]まとめ
NLP4J を使うと、Javaで簡単に自然言語処理ができますね!
プロジェクトURL
- 投稿日:2020-01-12T18:26:50+09:00
Beanの全フィールドを取得したい時に試したこと
Bean内の全フィールドを取得するために試行錯誤した過程を備忘録として残します。
やりたいこと
Bean内の全フィールドをIteratorで取得したい。
以下のBeanであれば「Field1、Field2、Field3、Field4」が取得できること。Fields.javapublic class Fields { // フィールド private String Field1; private String Field2; private String Field3; private String Field4; // コンストラクタ Fields(String Field1, String Field2, String Field3, String Field4) { this.Field1 = Field1; this.Field2 = Field2; this.Field3 = Field3; this.Field4 = Field4; } // settet,getterは省略 // . // . // . }やってみたこと 1
Javaの外部ライブラリである「Apache Commons」のPropertyUtils/BeanUtilsクラスを利用して取得
PropertyUtils及びBeanUtilsはJavaBeansを扱うクラスです。1
その中でもbean内の各値をMapに変換して返却するdescribe(Object bean)
メソッドを利用して、
BeanをMapに変換 → 変換したMapのkey値を取得(フィールド名)
といった流れでBean内の全フィールドを取得してみることにしました。メソッド
Fields.java(PropertyUtilsを利用)// PropertyUtils#describeを用いて全フィールドを取得 public Iterator<?> getNames() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{ try{ // BeanをMapに変換 → 変換したMapのkey値を取得(フィールド名) return PropertyUtils.describe(this).keySet().iterator(); }catch(IllegalAccessException e){ throw e; }catch(InvocationTargetException e){ throw e; }catch(NoSuchMethodException e){ throw e; } }Fields.java(BeanUtilsを利用)// BeanUtilsUtils#describeを用いて全フィールドを取得 public Iterator<?> getNames1() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{ try{ // BeanをMapに変換 → 変換したMapのkey値を取得(フィールド名) return BeanUtils.describe(this).keySet().iterator(); }catch(IllegalAccessException e){ throw e; }catch(InvocationTargetException e){ throw e; }catch(NoSuchMethodException e){ throw e; } }実行クラス
FieldGet.javapackage test; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; public class FieldGet { public static void main (String args[]){ Fields field = new Fields("フィールド1","フィールド2","フィールド3","フィールド4"); Iterator<?> propertyUtils; Iterator<?> beanUtils; try { // PropertyUtils#describeを用いて全フィールドを取得 propertyUtils = field.getNames(); // BeanUtilsUtils#describeを用いて全フィールドを取得 beanUtils = field.getNames1(); System.out.println("--PropertyUtils利用--"); while(propertyUtils.hasNext()){ System.out.println(propertyUtils.next()); } System.out.println("--BeanUtils利用--"); while(beanUtils.hasNext()){ System.out.println(beanUtils.next()); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } }実行結果
実行結果--PropertyUtils利用-- Field1 Field3 class Field2 Field4 --BeanUtils利用-- Field1 Field3 class Field2 Field4Beanのフィールド名を取得することが出来ましたが、
フィールド名ではない「class」が取得されたり、順番が昇順でないなど、改善の余地がありそうです。また、何度か実行しているうちに・・。
PropertyUtils/BeanUtils.describe(this)
の箇所でInvocationTargetException
が発生してしまい、フィールドが取得できなくなってしまいました。
詳細な原因がわからないため、別の方法でフィールド名を取得を検討することにしました。実行結果(一部)Caused by: java.lang.reflect.InvocationTargetException ... 1024 more Caused by: java.lang.StackOverflowErrorやってみたこと 2
リフレクションを利用
Beanのフィールドに関してはリフレクションAPIでも取得が可能です。2
getDeclaredFields()
を用いると、すべてのアクセス修飾子(public、protected、デフォルト、private)のフィールドがFieldクラスの配列で取得可能です。メソッド
Fields.java(リフレクションを利用)// Class#getDeclaredFieldsを用いて全フィールドを取得 public Iterator<?> getNames2(){ // すべてのアクセス修飾子のフィールドを取得 Field[] tmpField = this.getClass().getDeclaredFields(); // Iteratorで返却するためのリストを生成 List<String> Field = new ArrayList<String>(); for(int i = 0; i < tmpField.length; i++) { // getName()でフィールドを取得 Field.add(tmpField[i].getName()); } return Field.iterator(); }実行クラス
FieldGet.javapackage test; import java.util.Iterator; public class FieldGet { public static void main (String args[]){ Fields field = new Fields("フィールド1","フィールド2","フィールド3","フィールド4"); terator<?> reflection; // Class#getDeclaredFieldsを用いて全フィールドを取得 reflection = field.getNames2(); System.out.println("--reflection利用--"); while(propertyUtils.hasNext()){ System.out.println(propertyUtils.next()); } } }実行結果
実行結果--reflection利用-- Field1 Field2 Field3 Field4これで想定どおり、全フィールドを取得することができました。
番外編
StrutsのDynaActionFormで全フィールドを取得
StrutsのDynaActionFormでも、全フィールドを取得することが可能です。
✳︎考え方としては「やってみたこと 1」と同様手順1:DynaValidatorFormまたはDynaActionFormを継承したクラスを作成
手順2:「やってみたこと 1」と同様の考え方(フォームをMapに変換 → 変換したMapのkey値を取得(フィールド名))で、メソッドを実装
StrutsのDynaActionFormには、DynaActionFormで定義したプロパティをMap型に変換して返却するgetMap()
メソッドが存在する為、そのメソッドを利用すると「やって見たこと 1」と同様の考え方で、全フィールドを取得することが可能です。
PropertyUtils/BeanUtilsクラスのdescribe(Object bean)メソッドに相当するといったところでしょうか。
内部の詳細な処理についてはよくわかりませんが・・。StrutsDynaValidatorForm.javapackage test; import java.util.Iterator; import org.apache.struts.validator.DynaValidatorForm; public class StrutsDynaValidatorForm extends DynaValidatorForm { public Iterator getNames() { return this.getMap().keySet().iterator(); } }
BeanUtilsの使い方に関して参考になるサイトはこちら。Java BeanUtilsメモ(Hishidama's commons-BeanUtils Memo) ↩
- 投稿日:2020-01-12T17:39:33+09:00
Gradle の使い方
参考ページ
Building a RESTful Web Service1) ファイルの用意
設定ファイル と 3つの java ファイルを用意します。
$ tree . ├── build.gradle └── src └── main └── java └── hello ├── Application.java ├── Greeting.java └── GreetingController.javaBuilding a RESTful Web Service のものと、次の2つのファイルが違います。
build.gradlebuildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.1.RELEASE") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' bootJar { baseName = 'hello-service' version = '0.1.0' } repositories { mavenCentral() } sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile('org.springframework.boot:spring-boot-starter-test') }src/main/java/hello/GreetingController.javapackage hello; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMethod; @RestController public class GreetingController { private static final String template = "こんにちは, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping(value="/greeting",method=RequestMethod.GET) public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }2) build
$ gradle build Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 1s 2 actionable tasks: 2 executed次のようなファイルが作成されます
$ tree . ├── build │ ├── classes │ │ └── java │ │ └── main │ │ └── hello │ │ ├── Application.class │ │ ├── Greeting.class │ │ └── GreetingController.class │ ├── generated │ │ └── sources │ │ └── annotationProcessor │ │ └── java │ │ └── main │ ├── libs │ │ └── hello-service-0.1.0.jar │ └── tmp │ ├── bootJar │ │ └── MANIFEST.MF │ └── compileJava ├── build.gradle └── src └── main └── java └── hello ├── Application.java ├── Greeting.java └── GreetingController.java 18 directories, 9 files3) プログラムの実行
$ java -jar build/libs/hello-service-0.1.0.jar4) http://localhost:8080/greeting にアクセス
- 投稿日:2020-01-12T17:35:03+09:00
Laragonで簡単に開発環境を構築する
皆さん、学習するとき、開発をするとき、ローカルで確認を行うときの環境構築はどうされていますか?
恐らくMacを所有している方が多くDockerを使われている方が多いと思います。自分が現在、所有しているはHPのSPECTRE X360 13、Windows 10 Homeです。Windows 10 Homeなのです。
ラップトップと言っても非力というほどではありませんがVagrantを立ち上げている間、かなりファンが回り気になります。
それに決して速いとは言えません。さらに現時点ではまだWSL2とDocker for WSLは正式リリースされていません。ではどうするか?
https://laragon.org/Laragonです。
Windows向けのAMP環境構築ソフトで
PHP、Node.js、Python、Java、Go、Rubyをサポートし、
ApacheとNginxのどちらを使用するかを切り替えることができます。
では早速、インストールを行っていきましょう。1. インストール
https://github.com/leokhoa/laragon/releasesGithubから最新版を落としてきましょう。
環境構築の経験がない、初学者の方はlaragon-full.exeを選んでいきましょう。
以後はこれをベースに進めます。インストール先は拘りがなければわかりやすいようデフォルトのC:\Laragonにしておきます。
VSCode等を使用する際は"Sublime Text & Terminalを追加する"のチェックが外れた状態にしておきます。
ちなみにNotepad++、WinSCP、Putty、HeidiSQL Portable等がインストールされるのでこの1回のインストールだけで開発が出来るようになります。2. 起動
では起動してみましょう。
このスクリーンショットでPHP7.4になっているのは自身で後から追加ができるためです。
"ウェブ"を押すとホスト名を"localhost"ポート番号を8080で設定しているので
"http://localhost:8080/"
の形でブラウザが開きます。
"データベース"でHeidiSQL
"ターミナル"でCmderを起動します。
"ルート"は設定されたルートフォルダを表示します。"ウェブ"で表示される場所も同じものになります。
設定は右上にの歯車マークから表示できる設定で行います。3. バージョンの追加
今回はPHPを例に紹介します。
https://windows.php.net/download/
から使用するものをダウンロードしてきます。
フォルダを解凍後、
C:\laragon\bin\php\へ追加します。
PythonであればC:\laragon\bin\python\のようになります。
追加後に使用するバージョンを左上のメニューから選択します。
ここから起動時に使用する言語やバージョン等を切り替えることが出来ます。4.ガンガン使いましょう!
Macには現時点で対応していませんし、万能とまではいかないまでも
軽く使いやすいので空いた時間でサクッと作業を行うのに役立ちます。
OSがWindows 10 Homeで開発環境で悩んでいる方に特にオススメです。
- 投稿日:2020-01-12T17:12:00+09:00
Mecab を Win10 + Eclipse + Java の環境で動かす (2020年1月版)
試行錯誤しながらセットアップしましたので、本手順の再現までは確認しておりません。
Mecab のセットアップ
本家で配布されているWindows版は32bit版であり64bit Javaからの利用には不向きらしい、ということで野良ビルドとして配布されている 64bit版を導入
Mecab 64bit ダウンロード
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996
Mecab 64bit インストール
インストールディレクトリ C:\Program Files\MeCab
文字エンコーディング UTF-8
を指定して導入Mecab 64bit インストール結果
文字化けはしているものの、とりあえず動くようになりました。
>mecab 今日はいいい天気です。 今日はいいい 險伜捷,荳€闊ャ,*,*,*,*,* V 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 險伜捷,荳€闊ャ,*,*,*,*,* C 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 險伜捷,荳€闊ャ,*,*,*,*,* ナ 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* キ 險伜捷,荳€闊ャ,*,*,*,*,* B 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* EOS ^ZMecab 64bit DLL のコピー
"C:\Program Files\MeCab\bin\libmecab.dll"
を
"C:\Windows\System32\libmecab.dll"
にコピーしました。mecab-java のセットアップとビルド
mecab-java ダウンロード
https://code.google.com/archive/p/cmecab-java/downloads
cmecab-java-2.0.1-src.zip をダウンロードしました。
mecab-java ビルド作業
cmecab-java-2.0.1-src.zip を展開して、Eclipseのワークスペースにコピー。
build.xml をAnt実行すると、bin の下にcmecab-2.0.jar が出力されました。
(binディレクトリはEclipseのPackageExplorerでは表示されないのでWindowsのExplorerにて確認しました。)mecab-java を利用するプロジェクトとプログラムの作成
Javaプロジェクトを作成し、cmecab-2.0.jar と bridj-0.6.1 をクラスパスにセットする
以下のサンプルコードを作成する
(本家とほぼ同じですが、本家ではサンプルコードがうまく表示されていなかったので清書しました。)// https://code.google.com/archive/p/cmecab-java/wikis/HowToUse.wiki import net.moraleboost.mecab.Lattice; import net.moraleboost.mecab.Node; import net.moraleboost.mecab.impl.StandardTagger; public class HelloMecabMain { public static void main(String[] args) throws Exception { // Taggerを構築。 // 引数には、MeCabのcreateTagger()関数に与える引数を与える。 StandardTagger tagger = new StandardTagger(""); //バージョン文字列を取得 System.out.println("MeCab version " + tagger.version()); //Lattice(形態素解析に必要な実行時情報が格納されるオブジェクト)を構築 Lattice lattice = tagger.createLattice(); //解析対象文字列をセット String text = "今日はいい天気です。"; lattice.setSentence(text); //tagger.parse()を呼び出して、文字列を形態素解析する。 tagger.parse(lattice); //形態素解析結果を出力 System.out.println(lattice.toString()); //一つずつ形態素をたどりながら、表層形と素性を出力 Node node = lattice.bosNode(); while (node != null) { String surface = node.surface(); String feature = node.feature(); System.out.println(surface + "\t" + feature); node = node.next(); } //lattice, taggerを破壊 lattice.destroy(); tagger.destroy(); } }実行結果
MeCab version 0.996 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS BOS/EOS,*,*,*,*,*,*,*,* 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 BOS/EOS,*,*,*,*,*,*,*,*所感
Mecab関連は環境構築が難しいです。OSに依存しない実行環境があればよいと思いました。
Mecabは研究目的や単体で動かすにはそれほどめんどくさくないのだと思いますが、本格的なテキスト分析での利用や、多様な実行環境が存在する中での業務アプリケーションとしての利用には課題があるのかなと思いました。参考にしたページ
MeCabとeclipseのバインディングに苦労した - Sakaiakaのブログ
http://sakaiakas.hatenablog.com/entry/2018/02/20/231719PythonでMeCabを使ってみる(Windows10 64bit) - Qiita
https://qiita.com/wanko5296/items/eeb7865ee71a7b9f1a3a
- 投稿日:2020-01-12T17:12:00+09:00
Mecab を Win10 + Eclipse + Java + cmecab-java の環境で動かす (2020年1月版)
試行錯誤しながらセットアップしましたので、本手順の再現までは確認しておりません。
Mecab のセットアップ
本家で配布されているWindows版は32bit版であり64bit Javaからの利用には不向きらしい、ということで野良ビルドとして配布されている 64bit版を導入
Mecab 64bit ダウンロード
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996
Mecab 64bit インストール
インストールディレクトリ C:\Program Files\MeCab
文字エンコーディング UTF-8
を指定して導入Mecab 64bit インストール結果
文字化けはしているものの、とりあえず動くようになりました。
>mecab 今日はいいい天気です。 今日はいいい 險伜捷,荳€闊ャ,*,*,*,*,* V 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 險伜捷,荳€闊ャ,*,*,*,*,* C 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 險伜捷,荳€闊ャ,*,*,*,*,* ナ 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* キ 險伜捷,荳€闊ャ,*,*,*,*,* B 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* EOS ^ZMecab 64bit DLL のコピー
"C:\Program Files\MeCab\bin\libmecab.dll"
を
"C:\Windows\System32\libmecab.dll"
にコピーしました。cmecab-java のセットアップとビルド
cmecab-java ダウンロード
https://code.google.com/archive/p/cmecab-java/downloads
cmecab-java-2.0.1-src.zip をダウンロードしました。
cmecab-java ビルド作業
cmecab-java-2.0.1-src.zip を展開して、Eclipseのワークスペースにコピー。
build.xml をAnt実行すると、bin の下にcmecab-2.0.jar が出力されました。
(binディレクトリはEclipseのPackageExplorerでは表示されないのでWindowsのExplorerにて確認しました。)cmecab-java を利用するプロジェクトとプログラムの作成
Javaプロジェクトを作成し、cmecab-2.0.jar と bridj-0.6.1 をクラスパスにセットする
以下のサンプルコードを作成する
(本家とほぼ同じですが、本家ではサンプルコードがうまく表示されていなかったので清書しました。)// https://code.google.com/archive/p/cmecab-java/wikis/HowToUse.wiki import net.moraleboost.mecab.Lattice; import net.moraleboost.mecab.Node; import net.moraleboost.mecab.impl.StandardTagger; public class HelloMecabMain { public static void main(String[] args) throws Exception { // Taggerを構築。 // 引数には、MeCabのcreateTagger()関数に与える引数を与える。 StandardTagger tagger = new StandardTagger(""); //バージョン文字列を取得 System.out.println("MeCab version " + tagger.version()); //Lattice(形態素解析に必要な実行時情報が格納されるオブジェクト)を構築 Lattice lattice = tagger.createLattice(); //解析対象文字列をセット String text = "今日はいい天気です。"; lattice.setSentence(text); //tagger.parse()を呼び出して、文字列を形態素解析する。 tagger.parse(lattice); //形態素解析結果を出力 System.out.println(lattice.toString()); //一つずつ形態素をたどりながら、表層形と素性を出力 Node node = lattice.bosNode(); while (node != null) { String surface = node.surface(); String feature = node.feature(); System.out.println(surface + "\t" + feature); node = node.next(); } //lattice, taggerを破壊 lattice.destroy(); tagger.destroy(); } }実行結果
MeCab version 0.996 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS BOS/EOS,*,*,*,*,*,*,*,* 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 BOS/EOS,*,*,*,*,*,*,*,*所感
Mecab関連は環境構築が難しいです。OSに依存しない実行環境があればよいと思いました。
Mecabは研究目的や単体で動かすにはそれほどめんどくさくないのだと思いますが、本格的なテキスト分析での利用や、多様な実行環境が存在する中での業務アプリケーションとしての利用には課題があるのかなと思いました。参照
参考にしたページ
MeCabとeclipseのバインディングに苦労した - Sakaiakaのブログ
http://sakaiakas.hatenablog.com/entry/2018/02/20/231719PythonでMeCabを使ってみる(Windows10 64bit) - Qiita
https://qiita.com/wanko5296/items/eeb7865ee71a7b9f1a3a
- 投稿日:2020-01-12T14:36:40+09:00
SpringBootでバッチ処理作るときにハマったことメモ
Springbootでバッチ処理を作ろうとしたときに以下のことではまったのでメモ
- 作成したRepositoryが読み込めない!
ネットをしらべたところ、ConfigurableApplicationContext を使うべしとあったので以下のように記述
package com; import java.io.IOException; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class SampleApplication { /** * メインクラス * * @param args */ public static void main(String[] args) { try { ConfigurableApplicationContext context = SpringApplication.run(SampleBatchService.class, args); SampleBatchService service = context.getBean(SampleBatchService.class); service.run(args); context.close(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }が、RepositoryがDIできませんとのエラーが、、、
*************************** APPLICATION FAILED TO START *************************** Description: Field latestRateRepository in com.SampleApplication required a bean of type 'com.repository.LatestRateRepository' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'com.repository.LatestRateRepository' in your configuration. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sampleBatchService': Unsatisfied dependency expressed through field 'latestRateRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.repository.LatestRateRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:116) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) at com.SampleApplication.main(SampleApplication.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.repository.LatestRateRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1695) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1253) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ... 23 more org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread(SilentExitExceptionHandler.java:90) at org.springframework.boot.devtools.restart.Restarter.immediateRestart(Restarter.java:180) at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:164) at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:554) at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:74) at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:50) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:70) at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:47) at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) at com.SampleApplication.main(SampleApplication.java:21)3日くらい格闘したところ、mainクラスとこでConfigurableApplicationContext に指定するクラスが間違っていた。。。
ConfigurableApplicationContext context = SpringApplication.run(SampleBatchService.class, args);
↓
ConfigurableApplicationContext context = SpringApplication.run(SampleApplication.class, args);ここ、自クラスを指定しないといけないんですね
- 投稿日:2020-01-12T14:20:48+09:00
JavaでSLF4Jを使用する際のLoggerFactory.getLoggerの引数のクラス名取得方法
一般的な取得方法
private static final Logger logger = LoggerFactory.getLogger(TestSub1.class);
この場合、クラスファイル毎に記述が異なり、コピーする場合注意する必要がある。
TestSample1.javapackage test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSample1 { private static final Logger logger = LoggerFactory.getLogger(TestSub1.class); public void exec() { logger.debug("Exec method was executed."); } }thisを使って取得
private final Logger logger = LoggerFactory.getLogger(this.getClass());
thisを使用うする場合、
static
にすることができないが、どのクラスファイルでも記述が同じため、コピーすることができる。TestSample2.javapackage test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSample2 { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void exec() { logger.debug("TestSample#Exec method was executed."); } }クラス名取得メソッドを使用
private static final Logger logger = LoggerFactory.getLogger(Util.getClassName());
Util#getClassName
メソッドを使用することで、どのクラスファイルでも記述が同じため、コピーすることができる。またstatic
でも使用可能。TestSample3.javapackage test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSample3 { private static final Logger logger = LoggerFactory.getLogger(Util.getClassName()); public void exec() { logger.debug("TestSample3#exec method was executed."); } }Util.javapackage test; public class Util { public static String getClassName() { return Thread.currentThread().getStackTrace()[2].getClassName(); } }CDIの場合
@Produces
と@Inject
を使用して、Logger
にインスタンスを注入することが可能。
どのクラスファイルでも記述が同じため、コピーすることができる。SampleManagedBean.javapackage test.mb; import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named; import org.slf4j.Logger; @Named @SessionScoped public class SampleManagedBean implements Serializable { private static final long serialVersionUID = 1L; @Inject private transient Logger logger; public String execute() { logger.info("SampleManagedBean#execute method was executed."); return null; } }LoggerFactoryProducer.javapackage test.util; import javax.enterprise.context.Dependent; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Dependent public class LoggerFactoryProducer { @Produces public Logger getLogger(InjectionPoint ip) { return LoggerFactory.getLogger(ip.getMember().getDeclaringClass().getName()); } }以上
- 投稿日:2020-01-12T13:20:48+09:00
The java.home variable defined in Visual Studio Code settings points to a missing or inaccessible folder (C:avadk-13.0.1)というエラーをはかれた
エラーが出た
先日Javaの学習を始めたのでVScodeの拡張機能をインストールしていたら
"Language Support for Java(TM) by Red Hat"が"The java.home variable defined in Visual Studio Code settings points to a missing or inaccessible folder (C:avadk-13.0.1)"
というエラーをはきやがりました。
setting.jsonの中にはしっかりと設定しているつもりでしたがよく見てみると
エクスプローラからパスをコピーしてきたものは
"C:\Java\jdk-13.0.1"となるのですが
setting.jsonのなかに記述されているほかのアドレスたちは
"\"ではなく"/"となっていたのです!
どうやらこれのせいで認識されなくてエラーをはいていたようです。
皆さんも気を付けましょう。まとめ
エクスプローラでコピーしてくるとアドレスの区切りが"\"
setting.jsonのなかではアドレス区切りは"/"
そのせいで読み込めなかった。
置き換えたらうまく読み込んでくれました。
- 投稿日:2020-01-12T06:20:48+09:00
アルゴリズム 体操15
Merge Two Sorted Linked Lists (Easy)
説明
2つの昇順にソートされたSingly Linked Listが引数として渡されます。
それら二つをマージして、昇順にソートされたLinked Listのheadを返り値として返すアルゴリズム。例
以下のような二つのLinked Listがあります。
この二つのLinked List をソートを維持してマージすると以下のような単一のLinked Listにする。
Solution
Runtime Complexity O(m + n)
二つのポインタを使って二つのLinked Listに対して線形走査するので
m,nをそれぞれのLinked Listの長さとして、実行時間はO(m + n)となります。Space Complexity O(1)
ポインタのにを使用するのでメモリはO(1)となります。
実装
MergeSortList.javaclass mergeSortList{ public LinkedListNode merge_sorted(LinkedListNode head1,LinkedListNode head2) { if (head1 == null) { // edge case return head2; } else if (head2 == null) { return head1; } LinkedListNode cur1 = head1; // pointer1 LinkedListNode cur2 = head2; // pointer2 LinkedListNode cur3 = null; // pointer3 for merged list LinkedListNode head3 = null; // head of merged list while (cur1 != null && cur1 != null) { if (head3 == null) { if (cur1.data < cur2.data) { head3 = cur1; cur1 = cur1.next; } else { head3 = cur2; cur2 = cur2.next; } cur3 = head3; } else { if (cur1.data < cur2.data) { cur3.next = cur1; cur1 = cur1.next; } else { cur3.next = cur2; cur2 = cur2.next; } cur3 = cur3.next; } } if (cur1 != null) { cur3.next = cur1; } else { cur3.next = cur2; } return head3; } }