[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/01 17:29 / Filesize : 259 KB / Number-of Response : 1010
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

☆★Java質問・相談スレッド174★★



1 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 14:12:12.75 ID:I0KrLWwV.net]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。


前スレ
★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1429709719/

52 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 08:58:14.33 ID:HPXFOTKK.net]
>>25
org-modeから
pythonのプログラム実行したり
Javaを実行したりして
実行結果からlatexの生成まで自動で出来る

53 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 09:16:45.75 ID:HPXFOTKK.net]
Mavenにsenがないの何でだろうと思ってたら
mecabが代わりに入ってるのか

54 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 18:55:20.37 ID:C+19kKnD.net]
シューティングゲームの件なんですがゼビウスってIP解放されてるみたいなので自由に画像使っていいんですよね?

55 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 22:11:17.99 ID:2J99vRma.net]
JavaでポケモンのようなRPGゲームが作りたいのですが、
どうすればいいでしょうか?
ライブラリや、webサイトなど、いいやつあったら教えて下さい

56 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 23:02:33.02 ID:C+19kKnD.net]
>>54 java初めてすぐの頃それを目標にしてたけど難しかったから今は休止してやる夫のゲームとかシューティングとかを作って基本的な事学んでる。
自分でライブラリを一つ作れば完成する頃には基本的な事できるようになってると思うよ。

57 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 23:21:45.19 ID:i6vdxj63.net]
Javaでコマンドプロンプトのような対話型のCUI作りたいのですが、良い方法ないですか?
コマンドプロンプトにデフォで表示されるカレントディレクトリの文字列(プライマリプロンプト)を好きな文字列に書き換えたコマンドプロンプトみたいなUIを作りたいです

58 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 23:56:02.41 ID:C+19kKnD.net]
>>56
目的は何?あれかなり難しいと思う。
特に編集可能な部分とできない部分とか。

59 名前:デフォルトの名無しさん [2015/07/01(水) 00:17:38.78 ID:X0HvLJ6i.net]
それって普通にJavaからWindowsのコマンドプロンプト起動して使えばいいんじゃないの?

60 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:19:59.01 ID:uvZpt9v5.net]
>>57
PrologインタプリタをJavaで書きたいんです
素直にSwingでCUIっぽいGUI作るべきですかね……

>>58
cmd.exeとかですか?
あれってプライマリプロンプト消せますかね?



61 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:24:43.52 ID:uvZpt9v5.net]
連投すみません
getRuntime()でcmd.exeを呼び出すってことです

62 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:45:03.43 ID:hNUxg7tv.net]
>>59
インタプリタを作りたいなら、cmd.exe呼ぶのではダメだね。単にプライマリプロンプト書き換えるだけならいいけど

63 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 01:24:38.09 ID:uvZpt9v5.net]
>>61
プライマリプロンプトさえ書き換えることができれば最悪コマンドプロンプトでも大丈夫です
理想としては表示されるのは">"だけにしたいです

64 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 01:49:56.09 ID:hNUxg7tv.net]
>>62
promptコマンド実行するのは?
www.k-tanaka.net/cmd/prompt.php

65 名前:デフォルトの名無しさん [2015/07/01(水) 01:56:01.55 ID:X0HvLJ6i.net]
なんだ
別途CUIウィンドウでも出してやりたいのかと思ってた

こんな感じでいいんじゃないの?
https://paiza.io/projects/sqg_omPTV2GmLGLPSYAblg

66 名前:デフォルトの名無しさん [2015/07/01(水) 05:45:11.73 ID:X0HvLJ6i.net]
10行目
System.out.println(">");
じゃなく
System.out.print(">");


67 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:01:03.85 ID:PAlD3UqJ.net]
>>64
理想は別窓でCUI作りたいんですけどね
ですが、その方法でもやりたいこと出来そうです
ありがとうございます

>>63
promptコマンド初めて知りました
getRuntime().execでそのコマンドをオプションで設定すればよさそうですね

お二方ともアドバイスありがとうございました!
この2つを組み合わせれば解決しそうです!

68 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 13:33:07.90 ID:wha2+jyf.net]
インタープリターを作りたいということでした

69 名前:デフォルトの名無しさん [2015/07/01(水) 14:19:24.12 ID:s1758YKL.net]
別窓ならProcess クラスでコマンドプロンプト起動して標準入出力のパイプで>>64みたいなことやればいいんじゃねえの

70 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 16:46:53.30 ID:PIE0mCjM.net]
擬似ttyみたのだろう、エコー有の



71 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 00:10:00.51 ID:0ZgtCbO4.net]
画面が2つあって
片方から片方へ動いたり
なんか処理をするたびに変数を書き換える

変数と
画面描画用と2つもあったりして

その変数が50ぐらいあって
わけがわからなくなってしまう
押したのに思った表示がされないって感じ。原因突き止めるのがしょりを1つ1つおってなかなか探しにくく大変

こういう時どうやって書いてますか?

72 名前:デフォルトの名無しさん [2015/07/02(木) 00:31:06.83 ID:APWzUQfG.net]
仕様や設計を大きい紙に図などを用いて描きこんで理解を深める

73 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:23:58.71 ID:XrMU8HC+.net]
>>70
座標とかまとめられるものはデータオブジェクト定義する

74 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 06:38:15.16 ID:0ZgtCbO4.net]
データオブジェクトですか
ありがとう

ほかにないですよね

75 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 08:57:53.15 ID:OKw+w+2Z.net]
>>70
捨てる

76 名前:デフォルトの名無しさん [2015/07/02(木) 11:28:42.93 ID:Y8pHgarV.net]
PDFrenderer使ってPDFを表示させようとしたら↓みたいなエラーがでるんだが
どういうことなのか誰か教えてください

com.sun.pdfview.PDFParseException: Unknown pattern type 2
at com.sun.pdfview.pattern.PDFPattern.getPattern(PDFPattern.java:85)
at com.sun.pdfview.colorspace.PatternSpace.getPaint(PatternSpace.java:103)
at com.sun.pdfview.PDFParser.doPattern(PDFParser.java:1012)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:659)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at java.lang.Thread.run(Unknown Source)

java.io.IOException: Unknown CMap: UniJIS-UCS2-H
at com.sun.pdfview.font.PDFCMap.getCMap(PDFCMap.java:67)
at com.sun.pdfview.font.PDFFontEncoding.<init>(PDFFontEncoding.java:73)
at com.sun.pdfview.font.PDFFont.getFont(PDFFont.java:133)
at com.sun.pdfview.PDFParser.getFontFrom(PDFParser.java:1166)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:719)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at java.lang.Thread.run(Unknown Source)

77 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 13:12:52.85 ID:/5FFDtBS.net]
下のは ユニコードとJIS系文字コードの変換マップが見つからんといって怒られてるっぽ

78 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:14:01.20 ID:3aNd8Ume.net]
ファイルに保存する関係で現在のエポックタイムをintで取得したいのですがどうすればいいか分かりません。どうすればいいですか?
分単位で扱えれば問題ありません。

79 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 19:22:02.73 ID:o36/Jvt3.net]
Java エポックタイムで検索はしましたか?

80 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 19:36:01.92 ID:3aNd8Ume.net]
>>78
÷1000で保存してDateクラスにする時だけ*1000にすれば大丈夫ですかね?



81 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:03:52.03 ID:PeTcumKk.net]
>>79
精度だけの問題ならそれでいいんじゃないかな

82 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:10:25.44 ID:7CO9LjsE.net]
sqlについて、コネクションやステートメントなどはsql実行時毎に毎回作ってクローズする、といった形にした方が良いのでしょうか

83 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:20:18.32 ID:PeTcumKk.net]
>>81
コネクションは、トランザクションをコミットするまではクローズしないんじゃ。
auto commitするにしても、都度クローズするのは性能が出ないんじゃないかな。

84 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:41:50.90 ID:7CO9LjsE.net]
>>82
ありがとうこざいます
コネクションを閉じるのはコミット後という感じなのでしょうか?
作ろうとしているのはデータを引っ張ってきて表示したりデータを入力して一件だけinsertしたりupdateするだけ(速攻コミットします)のアプリケーションなのですが
この場合はやはり実行時毎にという形の方がいいでしょうか

あとsqlを実行してくれるメソッド(コネクション確立などをまとめた)を作って戻り値としてresultsetを返す感じにしたいのですが、これはやはりまずいですよね?
これもクローズしなければ駄目ですよね・・・

85 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:51:46.53 ID:Kvr8TTAx.net]
質問します
OS:win7(32bit)
JAVA SE8

c:\2015のhelloフォルダにHello.javaがあります。

っでコマンドプロンプトでclasspathを使った実行方法が
雑誌に載ってるのですが、java hello.Helloで実行できるのに
何を意図してclasspathで実行してるのでしょうか?
そもそもclasspathがよく分かりません。

c:\2015>java -classpath c:\2015 hello.Hello
1.8.0_45
Windows 7

c:\2015>java hello.Hello
1.8.0_45
Windows 7

86 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:59:21.71 ID:rL7z2Pgh.net]
>>84
ggrks

87 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:00:28.29 ID:rL7z2Pgh.net]
>>83
馬鹿のいうことは聞かずに定石どおりやれよ

88 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:07:39.06 ID:Kvr8TTAx.net]
>>85
ggってもよくわからないので、聞きにきまいた
4行くらいでさくっと教えて下さい

89 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:18:33.80 ID:1YOEOzPi.net]
>>83
実行毎の方がクローズし忘れることもないし安全。性能をあまり求められないならその方がいいかな。
ResultSetも使い終わったらクローズしましょう。

90 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:26:28.28 ID:5WP1zBDs.net]
>>87
c:\ で実行したら違いが出ると思うよ。
CLASSPATHを設定しないと
-cp . とほぼ同じ。



91 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:28:08.00 ID:1YOEOzPi.net]
>>87
classpathはclassファイルを探すルートのパスを指定する
実行時にclasspathを指定しないとPCの設定をそのまま引継ぐから
万が一にも別のHelloクラスを実行しないように明示的に指定してる

92 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 07:09:56.23 ID:VpUx+qI9.net]
>>89-90
はい。別Helloクラスを実行しないように明示してるとおぼえます。
ありがとうございます。

93 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:20:52.26 ID:PJhu4/Se.net]
>>83
一般的にトランザクションは1業務処理単位に張るよ
webシステムなら1リクエスト、UIのないバッチ処理みたいなものならmain開始から終了まで

コネクションはシステム起動時に取得して使い回し、終了時に解放することが多いよ
webシステムみたいに複数同時に接続がある場合はコネクションプールを使って管理するよ

public static void main(String[] args) {
 Connection c = null;

 try {
  c = getConnection();

  // 中略
 } finally {
  closeConnection(c);
 }
}

94 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:24:55.46 ID:tBykVJfm.net]
>>87
g
g
r
k
s

95 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:22:55.07 ID:oe2mkH9K.net]
>>87




96 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 20:07:36.11 ID:U0VBrdgo.net]
シューティングゲームPHP使ったらオンラインランキング機能できた。
タイトル画面作ったら配布します。

97 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 20:37:18.84 ID:U0VBrdgo.net]
アドバイスお願いします。
https://www.mediafire.com/folder/8gurxfhhq2a4d/

98 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 21:41:19.51 ID:bFkPbJ/F.net]
そういのはCodeBreak;とかOSDNで公開してくれよ

codebreak.com/ja/

osdn.jp/

99 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 17:17:23.45 ID:ymH/SGdA.net]
EclipseでPHP、C++の開発もしたいんだけど別にインストールしないといけないの?それともjava用Eclipseに少しプラグイン追加するだけでいいの?

100 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:11:19.72 ID:xXA8rqiC.net]
>>98
プラグイン追加でおk



101 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:24:39.64 ID:PDA5IlYH.net]
同時に使うんでなければ、悪いこと言わないから別々にしとけ
混ぜるとワークスペースが壊れやすくなる
別々ならわざわざプラグイン入れたりしなくてもEclipse本体とセットになったのが配布されてるし

102 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 00:41:41.57 ID:3yF620GD.net]
ワークスペース壊れるんか。別にインストールすることにする。
javaに慣れてるとPHP型とかコンパイルエラーないから怖い。

103 名前:デフォルトの名無しさん [2015/07/05(日) 02:59:50.27 ID:18u325sL.net]
jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
  ↑ ↑  ↑ ↑  ↑ ↑ 

104 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 10:19:38.13 ID:9j5TixOJ.net]
自作のIterableインターフェースを実装したクラスのインスタンスを
for( : )文に書いたらコンパイルエラーになりました。
どうしてですか?ちょっと納得がいきません

105 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 10:30:46.80 ID:R5D1CG4B.net]
そうだよえ

106 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 16:27:25.74 ID:AmGpjmvR.net]
sublime text使ってる人います?

107 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 17:51:33.76 ID:/o7HY1ZG.net]
>>100
壊れたことなんかないけど。
その理屈だとeclipse別にしなくても、一つでワークスペース分ければいいじゃん

108 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 02:32:49.77 ID:Xk0+gGMN.net]
windowsにおけるjavaのzip版はどこから手に入るのでしょうか


eclipseの日本語版Pleiadesのzip版の中には /java/8 /java/7 /java/6 の様に特定のバージョンのjavaが一つのディレクトリに入っているのですが
オラクル公式からDL出来るwindows版JDKは全てインストーラー形式でした。

109 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 03:15:03.84 ID:Cp57x3bu.net]
>>103
どうしてですか?って何か間違えてるからだろとしか言いようがないなw

110 名前:デフォルトの名無しさん [2015/07/06(月) 05:19:07.41 ID:6pDI0Ukz.net]
エラーメッセージを読むところから始めないとだめだわな



111 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 06:10:22.68 ID:huOu0VG0.net]
とくに問題はない
ideone.com/L28sRg

112 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:05:58.96 ID:EWqBVBeG.net]
昨日からc++初めて一番思ったのは標準API少ない事。
メモリ管理まで辿り着いてないからメモリは分からないけどjavaのAPIが凄いことが実感できた。

113 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 07:55:16.93 ID:imZ4ShMS.net]
質問ですが、重複なしの順序付きリスト (ArrayList の set版) は (LinkedHashSet 以外は)ないのでしょうか。

ArrayList のように、add() 順に配列として保持しておきたいけど、重複はなしにしたい(set系)というときに、
HashSet は順不同ですし、TreeSetではソートが発生して順序が保存されません。
だとすると LinkedHashSet がぴったりだと思うのですが、別に Hashテーブルが欲しいというわけでもなく、前方後方リンクという挿入・削除の実装を重視したいのではなく、単に配列でよいだけなので、LinkedHashSetだと、あまりパフォーマンスがよくなさそうです。
ごく単純にArraySet のようなものがあれば良いだけに思うのですが、これだけ単純なものなら自分の知らない何かのクラスがあるのか?と思ったので・・・

こういう場合、自前で重複チェックを実装して ArrayList を使うものですか?

114 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:31:43.22 ID:frR7J/1C.net]
>>112
配列かリスト用意して
arraylist.add(key)
hashset.put(key, value)
とかでいいんでない?

115 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 09:16:45.26 ID:9NGpSVRi.net]
>>112
重複チェックを実装するといっても、Listのcontainsメソッドを呼ぶだけだから、そんなに大変ではないと思う。

116 名前:デフォルトの名無しさん [2015/07/07(火) 12:22:28.88 ID:NG0m4ULv.net]
swiftは戻り値配列で複数戻せるのに、Javaは一つしか戻せないのはなぜですか?

117 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:31:46.24 ID:q4sA+s6F.net]
libGDXは8bitWAV対応してないしSlickはBMPの扱いがPNG、JPEGと微妙に違う
SDLみたいな8bit/16bitWAVもOGGもBMPもPNGもJPEGもぜ〜んぶこれ1本で再生・表示できるぜ!!っていうのはjavaにはないのかな・・・

118 名前:112 mailto:sage [2015/07/07(火) 13:32:48.41 ID:imZ4ShMS.net]
>>113-114 ありがとうございます。

>>113
これだと、arraylist側には重複が生じて、hashset の計算もあってパフォーマンスが悪くなるような・・・

>>114
そうなんですよね。簡単な実装だからこそ、なんでここまで単純なものがクラスとして用意されていないのか、理由があるのかな?と思って。

実際には、add処理に一段かまして、
   if (list.contains(item)) { list.add(item); }
をするだけなので、ArraySet extends ArrayList のクラスを作って override して重複なし保証のクラスとしてあちこちで使っています。

119 名前:112 mailto:sage [2015/07/07(火) 13:34:05.10 ID:imZ4ShMS.net]
>>117
!が抜けていました。l to !がみにくい!!
   if (!list.contains(item)) { list.add(item); }
です。

120 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 13:42:01.97 ID:t1FyPIkw.net]
>>115
サポートされていないからです



121 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 19:19:53.12 ID:d+b4eC8p.net]
>>112
要素数はどれくらいの予定なの?

122 名前:デフォルトの名無しさん [2015/07/07(火) 19:42:13.80 ID:ti+MtJze.net]
>>118
これ計算量やばくない?
要素数が10未満ならいいだろうけど。

123 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:04:00.75 ID:oR9xV2kd.net]
C#はかなり出来る自信有るんですが、
Java習得に何日くらい掛かりますか?

124 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:06:16.10 ID:BuaBK/wt.net]
本当にC#を理解してるのなら、Javaの言語自体は既に完璧にマスターしてると言っていい
MSだけ覚えてればいいC#とは違ってJavaは周辺技術がカオスだから、その習得に時間がかかるけど、
それは実際に使いながら必要なところを学んでいけばいい

125 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:10:15.69 ID:oR9xV2kd.net]
>>123
心強いアドレス有難うございます。
Webプログラミング系やりたいと思っています。頑張ります。

126 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:22:40.65 ID:Bop5Vbl6.net]
C#学んだ後で『クラス名.this』なんて記述を知って鼻血が出そうになったわ。
インナークラスのJava固有の事情による言語仕様だしC#だけで完璧には及ばない。

127 名前:112 mailto:sage [2015/07/07(火) 20:24:35.20 ID:imZ4ShMS.net]
>>120
大体1万くらいなんで、大したことはないかと
逆に1億とかになったら、linkedList系はきついので、アクセス速度を考えてHashSetにするかも・・・

>>121
いや、大したこと無いと思う
1万のリスト、重複2000くらいのを回して 40ms くらいだった。
たしかに contains 重そうだけど、このくらいの数だと Hashよりは速いみたい

128 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 21:05:30.75 ID:d+b4eC8p.net]
class ArraySet<E> extends ArrayList<E>
{
public boolean add(E e)
{
return !contains(e) && super.add(e);
}
}

class ArrayHashSet<E> extends ArrayList<E>
{
private final HashSet<E> set = new HashSet<>();
public boolean add(E e)
{
return set.add(e) && super.add(e);
}
}

俺の環境だと要素数10000重複約2000のIntegerの場合で、
10倍以上HashSet併用の方が早いけどなー

129 名前:デフォルトの名無しさん [2015/07/07(火) 21:08:43.92 ID:ti+MtJze.net]
俺の環境でもLinkedHashSetの方が早いわ。
ideone.com/MG4Jmq

130 名前:デフォルトの名無しさん [2015/07/07(火) 21:17:15.43 ID:ti+MtJze.net]
検証時にJITコンパイラがデッドコードと判断してたとかじゃないんかね



131 名前:デフォルトの名無しさん [2015/07/07(火) 22:19:46.08 ID:aSgrhpaf.net]
Javaはヌルポが発生する条件が分かりにくくて嫌になってきた。引数にnullが認められるのかがわかりにくい。

132 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:21:10.53 ID:UK9JBwIr.net]
それはリファレンスを読んだ上で言っているのか

133 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:22:19.41 ID:BuaBK/wt.net]
Javaは伝統的に引数を明示的にnullチェックしないで
VMが発するヌルポを代わりに使うクソみたいな慣習があるからね

134 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:27:52.19 ID:Bop5Vbl6.net]
APIリファレンスで許されない値を渡しておいて
チェックをしてくれないことに因縁をつけて開き直りとは。

135 名前:デフォルトの名無しさん [2015/07/07(火) 22:29:33.23 ID:aSgrhpaf.net]
optional型でラップしたり、eclipseで@nullable付ければわかりやすいけど、そんなソースカツ丼はなくて存在しているソースカツ丼はぐちゃぐちゃ。

136 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:32:53.36 ID:BuaBK/wt.net]
>>133
それでもうっかり間違えることはあるだろ
そのときに天然モノのヌルポが飛んでくると何が間違ってたのか非常にわかりにくい
標準のAPIくらいは明示的にチェックして分かりやすいエラーを出してくれてもいい
実際.NETのAPIはちゃんとチェックしてくれるぞ

137 名前:デフォルトの名無しさん [2015/07/07(火) 22:33:18.57 ID:aSgrhpaf.net]
Swiftがオープンになったから、Webアプリで使えるようになったら、そっちで良いと思う。

138 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:42:15.45 ID:PUDMbjUQ.net]
>>135
おまえはなぜここにいる?

139 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:57:31.95 ID:pti4544P.net]
nullObjectで

140 名前:112 mailto:sage [2015/07/07(火) 23:20:40.56 ID:imZ4ShMS.net]
>>127
ありがとうございます。ほんとだw
Integer と 500文字くらいのString の2種類で100〜100000個のデータの重複あり(35%くらい重複で大体65個前後登録になる)でやってみたら
ArrayHashSet<E> が圧倒した・・・下みたいな感じになったけど、Hashは速いなー

100個: ArrayHashSet<Integer>1[ms] --- Set.size()=66
100個: ArraySet<Integer>1[ms] --- Set.size()=66
100個: ArrayHashSet<String>1[ms] --- Set.size()=66
100個: ArraySet<String>0[ms] --- Set.size()=66

1000個: ArrayHashSet<Integer>1[ms] --- Set.size()=636
1000個: ArraySet<Integer>4[ms] --- Set.size()=636
1000個: ArrayHashSet<String>4[ms] --- Set.size()=636
1000個: ArraySet<String>7[ms] --- Set.size()=636

10000個: ArrayHashSet<Integer>1[ms] --- Set.size()=6331
10000個: ArraySet<Integer>259[ms] --- Set.size()=6331
10000個: ArrayHashSet<String>24[ms] --- Set.size()=6331
10000個: ArraySet<String>661[ms] --- Set.size()=6331

100000個: ArrayHashSet<Integer>10[ms] --- Set.size()=63071
100000個: ArraySet<Integer>23866[ms] --- Set.size()=63071
100000個: ArrayHashSet<String>222[ms] --- Set.size()=63071
100000個: ArraySet<String>131142[ms] --- Set.size()=63071



141 名前:112 mailto:sage [2015/07/07(火) 23:26:54.72 ID:imZ4ShMS.net]
↑すまない・・・専ブラの人には誤爆リンクできまくりですね・・・こりゃひどい

うーん。やっぱり、なんでArrayHashSet ってもともと java.util あたりにないんだろうって思う。
>>127 の実装だから自分でつくれ、ってことなのかなぁ。

142 名前:112 mailto:sage [2015/07/07(火) 23:51:57.75 ID:imZ4ShMS.net]
ArrayHashSet でググると、ちょこちょこ作っているプロジェクトがあるんですね
Arrayの要素がなくなってるやつも、ちらほらありますけど・・・

なんにせよ、スピード重視ならArrayHashSet 一択っぽいですね。消費メモリもまあたいして変わらん・・・と思う。
ありがとうございました >レスをくれた皆様

143 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 23:53:46.61 ID:65Qu9Cqr.net]
ArraySet?あるよ!

docs.oracle.com/cd/E11882_01/olap.112/e10794/oracle/olapi/ArraySet.html

144 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:08:07.93 ID:BAuXH8sr.net]
javaのsetの順序が保障されないってどういう仕組みなの?
取り出すときに乱数でも使ってるの?

145 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:13:54.02 ID:PWjvij60.net]
Arrayに拘るってランダムアクセスでもする予定なのか

146 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:31:05.79 ID:QVdVWp6D.net]
publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/java/rzaha/clpckdir.htm
この図でgeometoeyパッケージから親ディレクトリの隣にあるdocパッケージにアクセスするには
絶対パスを書くしかないのでしょうか

import ../../doc みたいな親ディレクトリへの相対パスは書けないのでしょうか

147 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:51:44.61 ID:ZiRWUpes.net]
>>145
書けません

148 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 06:31:21.01 ID:7qvaXLbV.net]
>>143
グループAに数字が50個くらいあって、それぞれの値の範囲は0〜99であることがわかっている。
新しく0〜99の値

149 名前:xが与えられたとき、Aにxが含まれるかどうかを調べ、含まれない場合は追加する効率的な方法は?

簡単な方法としては、100要素のboolean配列A[100]を用意してA[x]を調べて
A[x]がfalseならtrueに変えればいい。
これがハッシュ表の基本的な考え方。実際には常にxをそのまま添え字に使えるわけではないので、
xを何らかのルール(ハッシュ関数)で手頃な範囲の数値に変換するわけ。
こうやって値を追加していったとき、Aにどういう順序で値が挿入されたか後で知る方法はないだろ?
[]
[ここ壊れてます]

150 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 07:57:47.73 ID:BAuXH8sr.net]
>>147 そういう事か。でもハッシュ値ってintだからかなりの数の配列いらない?



151 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:16:17.89 ID:7qvaXLbV.net]
>>148
配列のサイズで剰余を取る
当然インデックスが被るので、配列にはリンクリストを入れるようにする

152 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 10:43:44.49 ID:3asjpveO.net]
オープンハッシュって方法だね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef