一个arraylist到另一个arraylist?

时间:2013-05-07 07:18:19

标签: android arraylist copy

我是android的新手..

我正在将一个String arraylist值复制到另一个String arraylist,我希望复制没有重复。请任何人帮助我...

非常感谢..

    public class Videoplayer extends Activity {
private GridView girGridView;
public static String hs = "";
public static ArrayList<String> Array = new ArrayList<String>();
public static ArrayList<String> resim_list=new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_videoplayer);
    Bundle bundle = getIntent().getExtras();
    ArrayList<String> Array = bundle.getStringArrayList("string-array");
    GridViewConfig.addImageUrls();
    System.out.println("String Video"+ Array);
    girGridView=(GridView) findViewById(R.id.gridView1_bir);
    girGridView.setAdapter(new ImageAdapter(this)); 
    girGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> arg0, View view, int position,long arg3) {
                    Toast.makeText(getApplicationContext(), GridViewConfig.getResim_list().get(position), Toast.LENGTH_SHORT).show();                              
                    }
            });
}
    public static class GridViewConfig {
    public static ArrayList<String> resim_list=new ArrayList<String>();
    public static ArrayList<String> getResim_list() {
            return resim_list;
    }
    public void setResim_list(ArrayList<String> resim_list) {
            GridViewConfig.resim_list = resim_list;
    }
    public static void addImageUrls() {
            Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments
        // LinkedHashSet maintains insertion order
            resim_list.addAll(hs);
     System.out.println("NEW RESIM_LIST" + resim_list);

怎么做???

5 个答案:

答案 0 :(得分:1)

使用设置集合类

Set<String> set  = new HashSet<String>(Array);
resim_list.addAll(set);

现在,Set将从ArrayList删除所有重复值。

答案 1 :(得分:0)

你可以制作原始数组列表
        一级{

   public static  ArrayList<String> Array in class One .
 } 

当想在任何其他类中使用此数组列表时,只需执行

class Two {
          ArrayList<String> Array2 = One.Array;
}

答案 2 :(得分:0)

为了确保你没有得到任何重复,你可以循环“resim_list”并检查“Array”,如果它包含“resim_list”中的元素

for(String item: resim_list){
    if(Array.contains(item))
    {
         Array.remove(item);   
    }    
}

然后你可以在其他两个答案中使用代码。

Set set = new HashSet(Array);
resim_list.addAll(set);

你不应该有任何重复。

答案 3 :(得分:0)

    public static ArrayList<String> Array = new ArrayList<String>();

    public static ArrayList<String> resim_list=new ArrayList<String>();

在您的活动中

    Array = bundle.getStringArrayList("string-array");
   // already Array is initalized. no need to initialize again
    GridViewConfig.addImageUrls();// call the add method

GridViewConfig类

    public static class GridViewConfig {
    public static ArrayList<String> resim_list=new ArrayList<String>();

    public static ArrayList<String> getResim_list() {
        return resim_list;
    }

    public void setResim_list(ArrayList<String> resim_list) {
        GridViewConfig.resim_list = resim_list;
    }

    public static void addImageUrls() {
        Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments 
        // LinkedHashSet maintains insertion order 
        resim_list.addAll(hs);
        for(int i=0;i<resim_list.size();i++)
        {
          System.out.println("NEW RESIM_LIST" + resim_list.get(i));

        }
    }
}

编辑:

在onCreate()

之前声明
public  ArrayList<String> Array = new ArrayList<String>();
public  ArrayList<String> resim_list=new ArrayList<String>();

在你的onCreate()

Array = bundle.getStringArrayList("string-array");
addImageUrls();

然后在您的活动类中定义addImageUrls,如下所示

      public  void addImageUrls() {
        ArrayList<String> resim_list=new ArrayList<String>();
        Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments 
        // LinkedHashSet maintains insertion order 
        resim_list.addAll(hs);
        for(int i=0;i<resim_list.size();i++)
        {
          System.out.println("NEW RESIM_LIST" + resim_list.get(i));
        }   
      }  

使用类范围声明数组。无需使用静态修改。如果您打算在另一个类中使用它,请使用intent传递它。

答案 4 :(得分:-1)

您可以使用addAll方法。

//without duplicated, use Set
Set setTemp = new HashSet(Array);
resim_list.addAll(setTemp);