2016-04-12 49 views
2

Çalışmam gereken nesneler listem var.Java - son listeye nasıl eklenir

Nesneye bağlı olarak, işlem, üzerinde çalıştırılan nesneden önce JUST oluşturulması sırasına göre yerleştirilmesi gereken yeni nesneye neden olur.

Normal koşullar altında, yeni bir liste oluşturup listelerini değiştirirdim. Bununla birlikte, bu özel durumda mümkün değildir, çünkü liste nihaidir.

Yeni bir liste oluşturmak, varolan listenin üzerine yazmak ve sonra eski listenin tüm eski öğelerinin üzerine yazıldığında kalan birçok öğe eklemek yerine daha zarif bir çözüm var mı?

GÜNCELLEME: psuedocode Böyle bir şey arıyorum

:

class Some{ //provided 
    public final List<Thing> finalList = ... 
} 

class MyClass{ 
    void handle(Thing t, List<Thing> newThings){ 
     //do something to t 
     //probably create and add new instances of Thing to newThings 
    } 

    void handle(Some s){ 
     for(Thing t : s.finalList){ 
      List<Thing> newThings = new ArrayList<>(); 
      handle(t,newThings); 
      for(Thing nt : newThings){ 
       //insert nt into s.finalList s.th. it is immediately precedes t 
      } 
     } 
    } 
+1

lütfen 'bir seçenek olabilir (int index, E öğesi)' Liste uygulamasına bağlı eklemek Cootri – Cootri

+0

sağlar: İşte bir örnek. – Jone

+0

söylediği gibi bazı kodunu belirtin bazı kodlar – laune

cevap

2

kullanın ListIterator ve previous() yöntem geçerli elemandan önce ekleyin. Başlangıçta bulunduğunuz yere geri dönmek için next()'u geri almayı unutmayın.

0

Son liste olsa bile, öğeye öğe ekleyebilirsiniz.

package test; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class TestList { 

    private final List<String> list = new ArrayList<>(); 

    public static void main(String[] args) { 
     TestList testList = new TestList(); 
     testList.createTestData(); 
     testList.insertInMiddle(); 
     testList.printAll(); 
    } 

    private void printAll() { 
     System.out.println(Arrays.toString(list.toArray())); 
    } 

    //Add a item between 1.2 
    private void insertInMiddle() { 
     //Use ListIterator or your current logic to find the right index to insert at 
     list.add(1, new String("1.2")); 
    } 

    private void createTestData() { 
     list.add(new String("1")); 
     list.add(new String("2")); 
    } 
}