こんにちは私はこれらのアイテムを言うことができるリストを持っています{30505 60 90 5 80}私がやりたいのは、たとえば3番目と4番目の要素を組み合わせて{30 50 65 90580}にすることです
どうすればいいのか教えていただけますか?私はJavaリンクリストクラスを使用しています。
こんにちは私はこれらのアイテムを言うことができるリストを持っています{30505 60 90 5 80}私がやりたいのは、たとえば3番目と4番目の要素を組み合わせて{30 50 65 90580}にすることです
どうすればいいのか教えていただけますか?私はJavaリンクリストクラスを使用しています。
現在のリンクに 2 つの値を追加し、2 つのリンクを削除して、新しいリンクを代わりに追加します。そのための API は次のとおりです。http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html removeおよびaddメソッド を使用します。
リンクされたリストは、リストに対して操作を実行するためのメソッドを提供しません。リストを管理するだけです。これを行う唯一の方法は、上記の場所から要素を取得して追加し、リストから上記の要素を削除してから、インデックスを使用して新しいアイテムを挿入することです。
LinkedList の API ドキュメントをお読みください。「結合」メソッドはありませんが、特定のインデックスで要素を削除するメソッドと、リスト内の任意の場所に要素を挿入するメソッドがあります。
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html
リンクされたリストをループします (ヘッド ノードから開始します)。各 LinkedList オブジェクトに、イテレータを機能させる nextNode プロパティがあると思います。インデックス 2 (値 5) に到達したら、インデックス 2 (値 60) の次のノードを見つけ、その値をインデックス 2 (値 5 で 65) に追加します。次に、値 90 のノードを指すインデックス 3 (値 60) の nextNode を検索し (これを newNextNode と呼びます)、インデックス 2 (値 5) の nextNode プロパティをそのノードにリセットします。
public class Main {
public static void main(String[] args) {
List<Integer> list = new LinkedList<>();
list.add(30);
list.add(50);
list.add(5);
list.add(60);
list.add(90);
list.add(5);
list.add(80);
System.out.println(list);
combine(list, 2, 3);
System.out.println(list);
}
public static void combine(List<Integer> list, int indexA, int indexB) {
Integer a = list.get(indexA);
Integer b = list.get(indexB);
list.remove(indexB); // [30, 50, 5, 90, 5, 80]
list.add(indexA, a + b); // [30, 50, 65, 5, 90, 5, 80]
list.remove(indexB); // [30, 50, 65, 90, 5, 80]
}
}
出力は次のとおりです。
[30, 50, 5, 60, 90, 5, 80]
[30, 50, 65, 90, 5, 80]
回避するにはnull値をチェックする必要がありますNullPointerException