1. ホーム
  2. java

[解決済み] ArrayListのアイテムを移動させる

2023-07-30 02:01:59

質問

私はこれまで ArrayList s. 私が実現しようとしているのは、このようなことをするためのメソッドです。

Item 1
Item 2
Item 3
Item 4

私は、リスト内のアイテムを上に移動させることができるようにしようとしています。例えば、項目 3 が移動された場合、リストは次のようになります。

Item 1
Item 3
Item 2
Item 4

今のところ私の小さな理解では、それなら私は以下のようなものが欲しいと思います。

IF arrayname index is not equal to 0
THEN move up
ELSE do nothing

私が苦労しているのは、"move up"の部分です。これをどのように実現するか、ヒントやコードサンプルがあれば、ぜひ教えてください。

どのように解決するのですか?

私は答えを探しているときにこの古い質問を見つけました。そして、同じことを探している誰かがここを通りかかるかもしれないので、私が見つけた解決策を投稿しようと思いました。

2つの要素を交換するために、Collections.swapは大丈夫です。しかし、より多くの要素を移動したい場合、Collections.sublist と Collections.rotate を創造的に使用する、より良いソリューションがあります。

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#rotate%28java.util.List,%20int%29

以下は引用ですが、そこに行って自分でも全文を読んでみてください。

<ブロッククオート

このメソッドをサブリストに適用すると、リスト内の1つまたは複数の要素の順序を維持したまま の順序を維持しながらリスト内の 1 つ以上の要素を移動するために、サブリストに適用することができます。 を移動させることができます。例えば、次のイディオムはインデックス j の要素 を位置 k (これは j 以上でなければなりません) に移動します。 に移動します。)

Collections.rotate(list.subList(j, k+1), -1);