回答編集履歴
2
追記1
answer
CHANGED
@@ -13,28 +13,35 @@
|
|
13
13
|
|
14
14
|
でも思いつかなかったのでコードを見ると...
|
15
15
|
|
16
|
-
リスト構造は
|
16
|
+
~~リスト構造は LinkedList で生成していますね。これが原因なのでは?と思いました。
|
17
|
+
~~
|
18
|
+
~~で、気になったので「LinkedList ArrayList 違い」及び「LinkedList 順番が狂う」と検索すると、~~
|
17
19
|
|
18
|
-
|
20
|
+
~~根拠1: [LinkedList](http://www1.megaegg.ne.jp/~yasu/ProgrammerPage/collection/linkedlist.html)~~
|
19
21
|
|
20
|
-
|
22
|
+
~~がヒットしました。~~
|
21
23
|
|
22
|
-
|
24
|
+
~~ArrayListは「次のオブジェクトへのポインタ」を持っているような状態なのに対し、LinkedListは「前と後~~~~ろのオブジェクトへのポインタ」を持っている状態です。 ( C言語風にいうと。 )~~
|
23
25
|
|
24
|
-
|
26
|
+
~~で、~~
|
25
27
|
|
26
|
-
ArrayListは「次のオブジェクトへのポインタ」を持っているような状態なのに対し、LinkedListは「前と後ろのオブジェクトへのポインタ」を持っている状態です。 ( C言語風にいうと。 )
|
27
|
-
|
28
|
-
で、
|
29
|
-
|
30
|
-
> LinkedListは自分で順序を持ってないためインデックスを指定してダイレクトにオブジェクトを読み出す場合は、インデックスが全体の前半にある場合は先頭から、後半にある場合は後から順番を数えて読み出します。
|
28
|
+
~~> LinkedListは自分で順序を持ってないためインデックスを指定してダイレクトにオブジェクトを読み出す場合は、インデックスが全体の前半にある場合は先頭から、後半にある場合は後から順番を数えて読み出します。
|
31
29
|
( from 根拠1のページ )
|
30
|
+
~~
|
31
|
+
~~とあります。 ~~
|
32
32
|
|
33
|
-
とあります。
|
34
|
-
|
35
|
-
ということは、C++のiteratorに相当するもの ( Javaにも iterator自体はあるようですが使ったことない... ) (根拠2: [[Java] Iteratorのメモ](https://qiita.com/yoshi389111/items/c24f8beefb7b96cad921))
|
33
|
+
~~ということは、C++のiteratorに相当するもの ( Javaにも iterator自体はあるようですが使ったことない... ) (根拠2: [[Java] Iteratorのメモ](https://qiita.com/yoshi389111/items/c24f8beefb7b96cad921))
|
36
34
|
が後ろにある状態でそれを元に戻していないから後ろから読み込まれているため、ソート済みでない感じになっていると思います。
|
35
|
+
~~
|
36
|
+
~~どうしてもLinkedListを使いたいなら、**iteratorに相当するやつで先頭に持ってきて...**とするか、
|
37
|
+
**ArrayListの方を使うか...**だと思います。
|
38
|
+
( iteratorを使わなくても先頭にiteratorに相当するやつを前に持ってくることができればそれでいいし。 )~~
|
37
39
|
|
40
|
+
[追記1]
|
38
|
-
どう
|
41
|
+
どうやら、takezoux2さんのご指摘によると
|
39
|
-
|
42
|
+
> ArrayListはリスト構造ではなく、内部に配列を持った実装です。
|
43
|
+
また、LinkedListも追加された要素の順番が変化することはありません。
|
44
|
+
なので、違うみたいです。取り消し線で取り下げますね。
|
45
|
+
|
46
|
+
たぶん、私が最初に挙げた内容が違うなら、「そもそもの前提であるデータ設定がなんらかの理由(ライブラリがバグを含んでいる等)によっての操作ミス」か「(〃)によってのソートミス」が考えられますね。
|
40
|
-
|
47
|
+
それかDBから引っ張ってくるときのデータとかが壊れているか、使い方が間違っているか。
|
1
修正
answer
CHANGED
@@ -35,9 +35,6 @@
|
|
35
35
|
ということは、C++のiteratorに相当するもの ( Javaにも iterator自体はあるようですが使ったことない... ) (根拠2: [[Java] Iteratorのメモ](https://qiita.com/yoshi389111/items/c24f8beefb7b96cad921))
|
36
36
|
が後ろにある状態でそれを元に戻していないから後ろから読み込まれているため、ソート済みでない感じになっていると思います。
|
37
37
|
|
38
|
-
質問者さんはカセットテープはご存知ですか? ( 最近の子どもだと名前すら...っていう場合があるようなので。質問者さんがおいくつなのか不明なので。無くてもいいですが。 ) 一度再生したら巻き戻ししないといけませんよね?
|
39
|
-
それを「巻き戻しせずに」再生ボタンを押したけどなぜか再生されない...みたいな状態になっていますね。
|
40
|
-
|
41
38
|
どうしてもLinkedListを使いたいなら、**iteratorに相当するやつで先頭に持ってきて...**とするか、
|
42
39
|
**ArrayListの方を使うか...**だと思います。
|
43
40
|
( iteratorを使わなくても先頭にiteratorに相当するやつを前に持ってくることができればそれでいいし。 )
|