我是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);
怎么做???
答案 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);