Java では、コレクションを使用するときに、コピー中に要素のインデックスが影響を受けないよう注意しながら、あるリストの要素を別のリストにコピーするさまざまなシナリオに遭遇します。このような種類のシナリオの場合、java.util.Collections パッケージには、一方のリストに存在する要素をもう一方のリストにコピーする関数 copy() が用意されており、新しいリストでも要素が同じインデックスを持つようになります。この関数を使用する場合、宛先リストのサイズはソース リストのサイズより大きくなければなりません。今回のこの関数の複雑さは線形です。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
以下は、パラメータを使用した Java の copy() の構文です。
構文:
public static void copy(List dest, List src)
引数:
上記の関数は以下の例外をスローします:
以下に挙げる例は次のとおりです。
宛先リストのサイズがソース リストより小さい場合の IndexOutOfBoundsException の発生を説明します。
コード:
import java.util.*; public class Demo { public static void main(String[] args) { List<String> mysrclist = new ArrayList<String>(6); List<String> mydestlist = new ArrayList<String>(11); mysrclist.add("Lets practice"); mysrclist.add("Java"); mysrclist.add("with US"); mysrclist.add("EDUCBA"); mysrclist.add("is a great"); mysrclist.add("Learnig Platform"); Collections.copy(mydestlist, mysrclist); System.out.println("Elements of source list: "+mysrclist); System.out.println("Elements of destination list: "+mydestlist); } }
出力:
宛先リストのサイズは 0 で、ソース リストのサイズは 6 であるため、宛先リストにはその特定のインデックスの場所がありません。したがって、以下の例外が出力としてスローされます。
E説明:
コード:
import java.util.*; public class Demo { public static void main(String[] args) { List<String> mysrclist = new ArrayList<String>(6); List<String> mydestlist = new ArrayList<String>(11); mysrclist.add("Lets practice"); mysrclist.add("Java"); mysrclist.add("with US"); System.out.println("Elements of source list: "+mysrclist); mydestlist.add("EDUCBA"); mydestlist.add("is a great"); mydestlist.add("Learnig Platform"); System.out.println("Elements of destination list before copy() executes: "+mydestlist); Collections.copy(mydestlist, mysrclist); System.out.println("Elements of destination list after copy() executes: "+mydestlist); } }
出力:
説明:
この例では、ソース リストの要素がコピー先リストの要素にコピーされるときに、宛先リストの要素がどのように上書きされるかを見ていきます。
コード:
import java.util.*; public class Demo { public static void main(String[] args) { //Create lists for source and destination List<String> mysrclist = new ArrayList<String>(6); List<String> mydestlist = new ArrayList<String>(11); //Populate two source and destination lists mysrclist.add("DIgital Learning"); mysrclist.add("for Java"); mysrclist.add("is great"); System.out.println("Elements of source list: "+mysrclist); mydestlist.add("Book Learning"); mydestlist.add("is"); mydestlist.add("a great"); mydestlist.add("Learnig Platform"); mydestlist.add("For All"); System.out.println("Elements of destination list before copying : "+mydestlist); // copy into destination list Collections.copy(mydestlist, mysrclist); System.out.println("Elements of destination list after copying : "+mydestlist); } }
出力:
説明:
コレクション パッケージは、1 つのソース リストの要素を同じインデックスにある宛先リストにコピーするために使用できるパブリック静的メソッドを提供します。このメソッドは、ソース リストより大きい宛先リストでのみ機能し、この操作の時間計算量は線形です。
以上がJavaのcopy()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。