★★Java質問・相談スレッド183★★

■ このスレッドは過去ログ倉庫に格納されています
2020/05/06(水) 22:12:08.99ID:q8N1X/Ij0
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://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質問・相談スレッド182★★
https://mevius.5ch.net/test/read.cgi/tech/1542595026/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/11/02(月) 18:35:01.57ID:xsbidkkO0
ありがとう

一応、いまは2つ使ってやってます。
1つの EnumSet で 3値判定できれば楽かなって思ったんだけど、変なクラス作ってもわかりにくくなるし、これでいきます。

EnumSet<ItemType> excludes
EnumSet<ItemType> includes
2020/11/02(月) 19:08:13.39ID:MdMNZpD/0
それ includes も excludes もそれぞれ A or B or C の何れかの状態しか取らないみたいなコード?

もしそうなら君が欲しいのは EnumSet じゃなくてボツった Enhanced Enum 的なものかもよ?
2020/11/02(月) 22:35:35.24ID:O692h/lZ0
そういうデータ構造だったのか
状態が排他的ならEnumMap<ItemType, X>でXを2値か3値のenumにするのもいいと思う
2020/11/03(火) 09:16:21.62ID:8Mdr3goE0
問題説明するときには、断片でもいいからコード提示しないとダメなんだなつくづく思った

こっちは○○って言ってるのに、なんで見当違いな答えなの?
とか思ってしまうけど、具体例出してないのが悪いんよな

数学物理でもこういう質問と答えの行き違いみたいなの結構ある
2020/11/03(火) 18:16:01.83ID:8Mdr3goE0
eclipse のゴミ箱ボタン(GCボタン)押して思ったんだけど、Java の GC でマウスカクつくのな
普通 UI スレッドで長時間タスクって、その アプリの UI が固まるだけだけど
どういうスレッドの使い方したらこうなるんだろう

もちろん、GC の設定や環境によるものはあると思うけど
2020/11/07(土) 07:34:51.13ID:lCK2kmHa0
ライブラリの著者が使ってほしくない機能をユーザーが使えないのってダメだよね
リフレクションじゃなくても、ちょっと設定すれば普通に private メソッドもフィールドも使えるようにしてほしいわ
中身ちょっと直したい時に、全部 pull して修正するの面倒
2020/11/07(土) 10:35:21.34ID:BzysXMDS0
痒いところに手が届かないならライブラリの熟成度が低いかライブラリの設計が悪い可能性はあると思う
仮に開発に参加している初心者が簡単にprivateのカプセル化のメリットを破壊して回れるような方式だとしたらOOP言語としての信頼自体を損ないかねない
デメリットやリスクを理解した上で使う仕組みとしてリフレクション程度の面倒くささは悪くない采配だと思う
2020/11/08(日) 05:54:45.69ID:QaJs4UOf0
チームで作業してる時に、ポンコツが private メソッドいじっちゃうってなら、
ポンコツがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな
コンパイラフラグとかJVMフラグとか
Groovy とかは、息をするように private メソッド呼ぶよね
540デフォルトの名無しさん (ワッチョイ 92ad-t1Nk)
垢版 |
2020/11/08(日) 15:13:38.03ID:iVjroALJ0
Kotlin もよろしく
541デフォルトの名無しさん (ブーイモ MMd5-T5d5)
垢版 |
2020/11/08(日) 16:23:08.51ID:CoeB3H6oM
うちの会社のハゲはポンコツで
チームで作業してる時に、ハゲが private メソッドいじっちゃうってなら、
ハゲがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな
コンパイラフラグとかJVMフラグとか
Groovy とかは、息をするように private メソッド呼ぶよね
2020/11/08(日) 17:42:51.72ID:E458/dQkH
うちの会社のハゲはチンポコで
チームで作業してる時に、チンポコが private メソッドいじっちゃうってなら、
チンポコがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな
コンパイラフラグとかJVMフラグとか
Groovy とかは、息をするように private メソッド呼ぶよね
543デフォルトの名無しさん (ワッチョイ 23ad-lcRl)
垢版 |
2020/11/11(水) 04:29:14.67ID:tSmBr0jI0
>>536
OSが変なのでは?
2020/11/11(水) 07:10:32.18ID:W2duQ0fU0
>>537
privateの機能誤解してね?
privateってソースコードの編集を禁止する機能じゃないぞ。
中身を直すとか無関係な話。
2020/11/11(水) 14:40:10.48ID:CiBMow/l0
カプセル化はわかってるけど、ライブラリ使い込んでいくにつれて、中身のそれいじらせろってなる事が多かったって話

ライブラリの設計が完璧なら必要ないのは分かるけど、そんなライブラリ現実にはほとんどない
2020/11/11(水) 16:49:47.12ID:fIiehboa0
privateにする理由
・将来の互換性の維持(公開したメソッドは変更しずらくなる)
・privateのほうが実行速度はわずかに速い
2020/11/11(水) 17:23:52.36ID:ZZXoiZzr0
最初はみんな private で、それを継承したクラスを作り始めると元のクラスの private がどんどん protected になる。
2020/11/11(水) 18:10:53.76ID:A+vlMwuMM
どんどんって言うほどだとクラスかパッケージの設計が不味いんじゃね
2020/11/12(木) 08:50:23.78ID:2UsfwbwTM
このスレにまともなJavaプログラマーいないのか...
誰かprivateの利用方法に突っ込めよ
2020/11/12(木) 09:01:47.04ID:2UsfwbwTM
やっぱりなんでもない。
もう人それぞれでいいや。

privateはクラスのメソッドや変数に対して外からアクセスしてほしくないことを明確化するくらいの認識があればそれでいいよ。
2020/11/12(木) 10:07:00.95ID:8AT56phj0
>>550
そうだよ
Javaのprivateはセキュリティではなく非公開の意思表示に過ぎない
だから開発者が公開したくないとしてもリフレクションで簡単に抜けられる
つまり開発者の使わせたくない意思よりも利用者の使いたい意思が最終的には優先されるの

それならリフレクション使わずともprivate呼べる手立てを用意しといてよというのが最初の主張なんじゃないかな?
少なくとも元発言者がJavaのprivateを理解してない初心者だとは思えない
2020/11/12(木) 10:14:56.40ID:0HPTF3ezM
簡単に抜けられるならそれでいいだろ
ってのが答えだろうね
553デフォルトの名無しさん (ワッチョイ 1b01-5VKD)
垢版 |
2020/11/12(木) 11:20:34.03ID:VX9X1ew10
君たちにプライベートなどないのだよ
2020/11/12(木) 14:38:22.65ID:svuT5wEO0
リフレクションで全部解決するならそれでいいんだけど、解決しないときもあるから
少なくとも性能面で格段に落ちる
2020/11/15(日) 21:24:45.76ID:wTz3BYxz0
javaとオブジェクト指向がごっちゃ?
リフレクションを多用したプログラムは基本的にバグの追跡が困難になって
システム全体の保守拡張性が失われていく
そもそもそういう事態を避けるためのオブジェクト指向なんだけどな
だからリフレクションを使う場面は
「公知され依存範囲も最小限の明示さえた範囲にとどまる場合」
に限るべきだと思う
2020/11/16(月) 11:28:08.49ID:UaonMcvo0
いうて最近の言語はリフレクション相当のことが簡単にできるものばっかだし
2020/11/16(月) 11:33:16.32ID:vXUZo3CGH
それがいいとは思わないけどな
2020/11/17(火) 18:58:02.35ID:MFEhUl1R0
オブジェクト指向で綺麗にシステム作っても
システムを拡張する時に依存性を無視して
勝手にデータベースから別ルートでデータを扱ったり
そんなことされたらもうおしまい
559デフォルトの名無しさん (ワッチョイ e2ad-b6az)
垢版 |
2020/11/23(月) 15:23:37.29ID:QcOiDeXE0
>>558
そういうことを防止するためにはそういうことができないような仕様の言語を新たに作るしかないでしょうな。
2020/11/23(月) 15:37:21.97ID:orFN3nO80
アプリケーションの番人としていつまでも居座る、という手もある

ボランティアになるかもしれないけど
2020/11/24(火) 01:47:50.63ID:vl9hZWNY0
>>559
コンパイラオプションでできるできない設定できればいいだけだと思うけどな
それが不可能なレベルでの入り組んだ問題への対処なら、そもそも言語仕様としても成立しないと思う
2020/12/04(金) 19:01:31.00ID:aixg0GRb0
junitの質問ってこちらで大丈夫でしょうか。
引数がinterfaceだったりabstractだったりするメソッドのテストってどうするんでしょう?
2020/12/05(土) 08:28:14.85ID:rfXr7q6U0
スタブとして自前で実装して引数に渡すか、Mockitoのようなライブラリを利用してモックテストする
2020/12/09(水) 17:38:11.52ID:3MRHajAc0
>>563
やっぱ実装しないとダメなんですね…。ありがとうございました。
2020/12/09(水) 17:43:20.81ID:4HmF+HCx0
いやMockitoを使えば実装は要らない
知らないものを見ないふりしているといつまでも初心者のままだよ
566デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/09(水) 18:23:23.41ID:1rAAexgP0
偉そうにw
2020/12/10(木) 01:15:30.07ID:Ylu2UlWn0
でも図星でしょ?
質問の回答に知らない言葉が出てきたからその部分をググりもせずにスルーした
そこが本当は必要としてた知識だったのに
568デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:11:22.54ID:/iej8cKu0
一般化して説教かますのはただのアホだと思うw
569デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:12:29.29ID:/iej8cKu0
信号を無視したら信号無視だよと言ってるようなもの
チン次郎論法の亜種だな
570デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:13:39.91ID:/iej8cKu0
説教厨
571デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:15:17.13ID:/iej8cKu0
そんなに説教がしたいか
そんなに偉ぶりたいか
そんなに自分の立ち位置を確認したいのか
572デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:19:43.99ID:/iej8cKu0
読み直してみたけどMockito使うことを実装するって言ってるだけなんじゃない?
573デフォルトの名無しさん (ワッチョイ bf01-4pnK)
垢版 |
2020/12/10(木) 10:20:37.95ID:/iej8cKu0
> 565 :デフォルトの名無しさん (ワッチョイ 8759-u7CM) [↓] :2020/12/09(水) 17:43:20.81 ID:4HmF+HCx0 [PC]
> いやMockitoを使えば実装は要らない
> 知らないものを見ないふりしているといつまでも初心者のままだよ

一生許さないから
2020/12/22(火) 10:55:13.03ID:EExbCgorr
PCをゲーム機のようにしか扱って来なかった人間ですが、3週間でサーティファイのJava能力2級を取得することは可能でしょうか?
スレッド処理やら例外やらは大まかに分かりましたが、インターフェースがビックリするくらい理解できないです
2020/12/22(火) 11:08:00.09ID:fGHiXn/20
インターフェース=共通規格の仕様
って考えるといいかもね
あるインターフェースを実装しているクラスのインスタンスは共通規格に準拠しているから共通規格のメソッドを呼べる
そのクラスのインスタンスをインターフェース型変数に代入することができる
2020/12/22(火) 11:12:00.11ID:fGHiXn/20
ゲームで例えるとこうだ
USBゲームパッド仕様=インターフェース
PS4コントローラー=USBゲームパッド仕様を実装したクラス
XBoxコントローラー=USBゲームパッド仕様を実装したクラス

どちらのコントローラーも固有の機能を持っているがPCに繋げばUSBゲームパッドとして使える(振る舞える)
2020/12/22(火) 11:23:31.03ID:EExbCgorr
>>576
わざわざゲームで分かりやすく例えてくれてありがとうございます
578デフォルトの名無しさん (ワッチョイ eaa5-tzJm)
垢版 |
2020/12/22(火) 11:24:06.79ID:AK8G7vhK0
ちげぇなぁ
こういう奴の言ってることは大抵こう

「クラスはなんとかギリギリ理解した(ような気がするけど)、その後のインタフェイスになってもう完全に分からなくなった理解不可能助けて」
2020/12/22(火) 11:58:57.97ID:EExbCgorr
>>578
確かに理解出来てないものは多々ありますが、運や勘でもとにかく資格を取得するのが大事なので上のインターフェースについて概要を軽く説明して貰った方が飲み込みやすくて助かります
580デフォルトの名無しさん (ワッチョイ eaa5-tzJm)
垢版 |
2020/12/22(火) 12:05:53.62ID:AK8G7vhK0
サーティファイのテキストの説明がよっぽどおかしいのか?
どうなってんだ
どういう駄文が書き連ねてあるんだ?
そもそも何見て分からんと言ってるんだ?
581デフォルトの名無しさん (ワッチョイ bb40-uMNi)
垢版 |
2020/12/25(金) 13:39:16.56ID:cslSq7u80
eclipseとかでhashcode, equalsを自動作成できるけど
「未作成のクラスを検索する」とか
「自動生成と異なった実装になっているクラスを検索する」
みたいなことできないの?
メンバー変数を書き換えた時に作り直し忘れるとバグになるし面倒だよね
Lombokで自動生成するという手段があるらしいけどLombok使いたくないし
2020/12/25(金) 18:46:16.26ID:z1tztk6g0
クラスの代わりにRecordを使えば解決
ただし正式に使えるのはJava16から
583デフォルトの名無しさん (ワッチョイ 0bab-JtRj)
垢版 |
2020/12/26(土) 22:32:49.92ID:5jiSe6u40
馬鹿には無理
2020/12/28(月) 18:23:31.38ID:LMTdakKW0
Intellijでクラスの中に書いたメソッドを実行するにはそのクラスの中にmain関数を作ってメソッド呼び出す処理を書いてrunする以外にありますか?色んなクラスにmainができてしまうので、普通はどうやるのか知りたいです。
2020/12/28(月) 22:23:00.13ID:h8cHolFuM
>>584
ユニットテストを書け
指定したテストメソッドを単独で実行できる
2021/01/08(金) 14:44:14.15ID:rqN737YQ0
最近勉強し始めたんですけど、インスタンスの部分で詰まってしまいました
画像の状態でシンボルが見つからないと表示されます。助けてください
https://i.imgur.com/2HVyCno.png
2021/01/08(金) 14:54:25.00ID:GG1sOSQC0
>>586
import文がない
ふつうのIDEならSampleClass01のところでCtrl+Spaceで自動インポートされる
VSCodeに自動インポートがなかったら窓から投げ捨てろ
588デフォルトの名無しさん (ワッチョイ ff01-wy8K)
垢版 |
2021/01/08(金) 15:12:47.26ID:eXVg8SYp0
自動インポートは甘え
2021/01/08(金) 15:52:27.94ID:rqN737YQ0
>>587「import kihon.sample600.SampleClass01;」と書き足してもダメでした
2021/01/08(金) 16:09:54.53ID:f3mpSfzUa
同一パッケージはimportいらんくない?
javac ./*でいけるんじゃね
2021/01/08(金) 16:10:35.19ID:f3mpSfzUa
>>590
ミスったjavac ./*.javaで
592デフォルトの名無しさん (ワッチョイ ff01-wy8K)
垢版 |
2021/01/08(金) 16:18:38.36ID:eXVg8SYp0
皮肉なものだなIDEならとイキったアホがimportの仕様をしらないとわw
2021/01/08(金) 16:24:59.60ID:Q1os/2WZ0
VSw
594デフォルトの名無しさん (ワッチョイ ff01-wy8K)
垢版 |
2021/01/08(金) 16:25:32.62ID:eXVg8SYp0
myjavaフォルダで
javac kihon/sample600/Sample601.java
としてもコンパイルできるはず

カレントフォルダはクラスパスに追加されて
kihon/sample600内にclassファイルが存在するので
595デフォルトの名無しさん (ワッチョイ ff01-wy8K)
垢版 |
2021/01/08(金) 16:26:31.85ID:eXVg8SYp0
> 587+1 :デフォルトの名無しさん (ワッチョイ 5f9c-NUt6) [↓] :2021/01/08(金) 14:54:25.00 ID:GG1sOSQC0 [PC]
> >>586
> import文がない
> ふつうのIDEならSampleClass01のところでCtrl+Spaceで自動インポートされる
> VSCodeに自動インポートがなかったら窓から投げ捨てろ

こいつwwww
2021/01/08(金) 16:28:08.16ID:Q1os/2WZ0
Netbeansにしなさい
597デフォルトの名無しさん (ワッチョイ 7f40-Cbw0)
垢版 |
2021/01/12(火) 00:52:52.68ID:SnMLaeAE0
eclipse collectionsのConcurrentHashMapと標準のはどっちが高性能なの?
JMHと言うのやってみようと思ったけどエラー出て動かなかった
JPMSのバグらしい
598デフォルトの名無しさん (ワッチョイ 7f40-Cbw0)
垢版 |
2021/01/12(火) 02:28:37.16ID:SnMLaeAE0
JDKの方が速かった
2021/01/21(木) 13:30:43.09ID:HsCZH7Vy0
JavaAPIに修正というかアップデートして欲しいとき
日本語で質問や要望だせるコミュは有りますか?

java MIDIのINでスレッド立ち上げるの辞めて欲しいのよね
2021/01/21(木) 13:39:02.26ID:dym1y4TL0
>>599
JCPに参加する
ttps://www.jcp.org/aboutJava/communityprocess/JCPoverview-ja.pdf?q=jpc
2021/01/21(木) 14:52:30.70ID:dym1y4TL0
>>599
実装の話ならOpenJDK ML
ttps://mail.openjdk.java.net/mailman/listinfo
2021/01/21(木) 15:13:31.95ID:f8qhc4HR0
ありがと。
日本語フォーラムに近いのは上かしら。
メンバーシップってほどなのかなーって気もしますけれど。

考えてみる。
2021/01/21(木) 15:17:49.42ID:upjC6TmF0
>>599
正規ルートを知ったところで相手にされない
それよりもTwitterで日本人のJava権威者の目に止まったほうが可能性高い
2021/01/21(木) 20:13:53.97ID:jbt85nZO0
色々やってみたら、MSOSのアクティブじゃないアプリの優先度の上限についてる問題だったわ
2021/01/22(金) 19:32:48.29ID:Ji2YQvfh0
DBと連携する簡単なwebアプリを作っています。
eclipseでは一通り動作を確認しました。

それとは別のlinuxマシンがあり、その上でtomcatの所定の位置にwarファイル、
jdbcドライバを配置して、ブラウザからアクセスすると例外が出ます。 

h2 dbを使っていますが組み込みモード、サーバーモードのどちらでも起こります。
ログを見る限り書き込み権限とかパーミッションの話のようですが、
具体的に何に誰の権限を与えるのかよくわかりません。

今のdbファイルの権限(とりあえずグループに書き込み権限を追加)
-rw-rw-r-- 1 pi pi 32768 1月 17 23:04 mydb.mv.db
-rw-rw-r-- 1 pi pi 2193 1月 16 14:34 mydb.trace.db

その後wabアプリにアクセスした際のログ
tomcat9/logs/catarina.out
[2021-01-20 23:14:12] [info] org.h2.message.DbException: ログファイル
エラー: "/mydb.trace.db"
[2021-01-20 23:14:12] [info] Log file error: "/mydb.trace.db", cause:
"java.io.FileNotFoundException: /mydb.trace.db (読み込み専用ファイルシ
ステムです)" [90034-200]
[2021-01-20 23:14:12] [info] org.h2.message.DbException: ログファイル
エラー: "/mydb.trace.db"
[2021-01-20 23:14:12] [info] Log file error: "/mydb.trace.db", cause:
"java.io.FileNotFoundException: /mydb.trace.db (読み込み専用ファイルシ
ステムです)" [90034-200]
[2021-01-20 23:14:12] [info] #011at org.h2.message.DbException.get(DbE
xception.java:194)
[2021-01-20 23:14:12] [info] #011at org.h2.message.TraceSystem.logWrit
ingError(TraceSystem.java:294)
[2021-01-20 23:14:12] [info] #011at org.h2.message.TraceSystem.openWri
ter(TraceSystem.java:315)
606デフォルトの名無しさん (ワッチョイ bf01-uxcu)
垢版 |
2021/01/22(金) 19:46:37.35ID:WWOGJuaM0
>>605
ファイルシステムが壊れてるんじゃない?

なんかそれっぽいのがあった
https://yatta47.hateblo.jp/entry/2015/02/08/230520
2021/01/22(金) 19:49:45.57ID:3IahkNr8M
dbのパスがルートになってるけど、本当は/の前に何かあったんじゃないの?
2021/01/22(金) 20:31:56.26ID:Ji2YQvfh0
>>606
ファイルシステムですか、思いもつきませんでした。
ラズパイのmicro sdなのであり得そうです。調べてみます。
2021/01/22(金) 20:57:53.49ID:Ji2YQvfh0
>>607
javaの方では一応
jdbc:h2:tcp://localhost/~/mydb
と指定してますが、ログの方はルートディレクトリに書こうとしてるみたいなことを言ってるんでしょうか。
でもホームディレクトリにファイルが出来てるんですよね…

調べてみるとこちらの質問も同じようにログファイルエラーが出ていますが、
これはurl指定が間違っていたからのようです。
https://stackoverflow.com/questions/64756454/why-does-spring-boot-with-embedded-h2-throw-a-org-h2-message-dbexception-error

試しに一回絶対パスで指定してみようかと思います。
2021/01/22(金) 22:10:41.90ID:mLA72Gs/0
とりあえずotherにもw権限与えてみて様子を見てみるとか
2021/01/23(土) 18:19:02.53ID:DvIRe0+n0
>>605ですが、h2のサーバーモードをターミナルから起動したところ接続できました。
ブラウザのコンソールで接続したら起動するものだと勝手に思っていました(今もよくわかっていませんが)。
h2の英語ドキュメントを頑張って読みます。

組み込みモードでは依然として繋がりませんが、これでひとまず例外は出なくなったのでよかったです。
色々と情報をありがとうございました

>>610
dbのファイルやホームディレクトリなども一通り777にして試しましたが、
それでも組み込みモードでは上手くいきませんでした。
とりあえずサーバーモードで使っていこうと思います。ありがとうございました。
2021/02/01(月) 11:43:49.07ID:MkfMndgDp
今時はJava+springでバッチ作るとしたらどんなアーキテクチャが主流なんかね。
2021/02/02(火) 15:25:59.09ID:uGvN1c8B0
Collections.sort(numbers, (a, b) -> {
return a - b;
});

これが昇順にソートされるのは何でですか?
sortの2つ目の引数にcompareを実装するラムダ式を入れて、aとbの比較をして、
結果の大小で戻り値が3種類に分かれるのはわかるんですが、その結果をどう使っているのかと、
numbersが1,2,3,4,5のときと、3,1,2,4,5のときでa,bに代入される順番やループ回数が違うのがわかりません。
614デフォルトの名無しさん (ワッチョイ 799c-Jvp0)
垢版 |
2021/02/02(火) 16:17:26.48ID:fQp+SbTP0
Collections.sortの実装はマージソートなんだけどそれ自体は気にしなくてもいい
他のソートアルゴリズムだとしてもかまわない
どのようなアルゴリズムであっても2つの要素の大小を比較しなければならない場面があるじゃない?
そのときに第2引数で指定したラムダ式が呼ばれるんだ
2021/02/02(火) 16:50:00.48ID:mk8gJgM80
>>613
aとbを比較して
aのほうがソート順で前になるべきなら負の整数
bのほうがソート順で前になるべきなら正の整数
同じ順序の場合は0を返す
というのが比較関数(Comparator)の定義

比較するのが数値の場合、a - bとすればaが数値として小さければ負の数となり
ソート順でもaのほうが前にあるべきという結果となるので昇順でソートされる
aとbがどういう順序で何回渡されるかや、それをどう使うかはsortの実装次第
2021/02/02(火) 17:06:32.58ID:3cbYHkwpd
そもそも中身がブラックボックスの方が余計なこと考えなくて済むから良いのに
理屈うんたら言うなら自分で調べろよと思う
2021/02/02(火) 17:16:02.59ID:uGvN1c8B0
ああ〜中でマージソートってのが行われてて、そこで使わせたい比較条件をラムダで渡してるだけで、何度渡されるか、どう使われるかはマージソートの実装次第なんですね。分かりました、ありがとうございます。
2021/02/02(火) 19:22:55.20ID:9XQkw1u50
javadoc読みな。仕様上は安定ソートとしか決まってない。
あと、merge sortなんてとっくに使ってないから。
2021/02/02(火) 20:09:44.23ID:e6NHHBUlM
プリミティブ型でない場合は今でもマージソート(と挿入ソート)でしょ
620デフォルトの名無しさん (ブーイモ MM81-Jvp0)
垢版 |
2021/02/02(火) 20:18:24.67ID:KuFg8ZUKM
マージソートが論点ではないことさえ理解できないアスペは放っておいたほうがいいよ
2021/02/03(水) 09:03:50.89ID:n2IYOEt10
>>619-620
プリミティブかどうかで決まらないしマージソートと挿入ソートでもない。
だいたいこのスレワッチョイありだぞ。
622デフォルトの名無しさん (ワッチョイ 9e01-5KyH)
垢版 |
2021/02/03(水) 09:52:05.10ID:xX1mwfrr0
>>621
Arrays.sortはプリミティブのときクイックソート
オブジェクトのときマージソートなんよ
623デフォルトの名無しさん (ワッチョイ 9e01-5KyH)
垢版 |
2021/02/03(水) 09:56:16.50ID:xX1mwfrr0
Arrays.sortで使われてるTimsortも
Arrays.parallelSortで使われてるCilksortもマージソートの亜種じゃん
2021/02/03(水) 11:06:25.20ID:aiIl5cQz0
マジか
2021/02/03(水) 11:19:21.23ID:wsPwPdcB0
皆さんそーとーお詳しいようで
2021/02/04(木) 15:39:54.92ID:4mrWh63N0
なんで Java も JavaScript も String に UTF-16 使うん?

UTF-8 がメジャーだけど、
やっぱりバイト長ころころ変わるのは使いにくいのかな

String#length の現在の仕様でもサロゲートペアの扱いとか使い勝手悪いけど、
そのまま UTF-8 で実装したらさらにカオスか
文字数取得だけでも面倒なアルゴリズムになりそうね
627デフォルトの名無しさん (ワッチョイ 9fad-JWMU)
垢版 |
2021/02/07(日) 18:10:03.45ID:wc7Pe9WT0
質問書きつつ自分で答え書いちゃうって何?
個人的な感想をみんなに公開してみたかったということ?
2021/02/07(日) 18:32:32.74ID:n+epGkV90
単に歴史的経緯でしょ。
昔はunicodeといえばUTF-16しかなかった。
2021/02/07(日) 21:26:33.15ID:wvgli5uH0
>>627
煽るような書き込みやめなよ
2021/02/07(日) 21:40:41.84ID:WCHi594P0
馬鹿乙
2021/02/08(月) 04:26:58.96ID:hPvPiWOZ0
Unicode
その設計にあたり世界中の名だたる企業から優秀な技術者が集まった
当時、彼らは16ビットで世界中のあらゆる文字が表せると信じていた
固定長、それがUTF-16の強みだった
その頃生まれたプログラミング言語も皆そこに乗っかった
だが、それは幻想だった
予想を遥かに上回る文字種がそこにはあった
設計チームは悩んだ
サロゲートペア、それは苦肉の策だった
UTF-16は優位性を失い、要らん子となった
時代は移ろい、今若者は訊ねた、なんでUTF-16使うん?と
歴史的経緯じゃね?俺もそう思った
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況