PDA

View Full Version : اشتراک و تفاضل یک آرایه در جاوا؟



aslani031
سه شنبه 24 آبان 1390, 17:13 عصر
با سلام


در کد زیر ما اجتماع دو آرایه رو چاپ میکنیم .
اگر بخواهیم که از این دو آرایه با دو تابع اشتراک و تفاضل رو هم چاپ کنیم به چه شکلی باید عمل کنیم؟



public Set union(Set set2)
{
Set ret = new Set();
int index = set2.size();
for (int i=0;i<index;i++)
ret.add(set2.get(i));
for (int i=0;i<size;i++)
{
int member = set.get(i);
if (!ret.search(member))
ret.add(member);
}
return ret;
}




با تشکر

hosein.zare
جمعه 04 آذر 1390, 23:50 عصر
دوست من متأسفانه نتونستم کدی که نوشتی را درست متوجه بشم (مثلا شما new Set کردی در صورتی که Set یک اینترفیسه)
به هر حال برای اجتماع میتونی از متودهای addAll و برای تفاضل هم می تونی از removeAll از کلاس Collection استفاده کنی.

Set<String> setNo1 = new HashSet<String>();
Set<String> setNo2 = new HashSet<String>();

setNo1.add("setNo1: Name1");
setNo1.add("setNo1: Name2");
setNo1.add("setNo1: Name3");
setNo1.add("setNo1: Name4");

setNo2.add("setNo2: Name5");
setNo2.add("setNo2: Name6");
setNo2.add("setNo2: Name7");
setNo2.add("setNo2: Name8");

Set<String> unionSet = new HashSet<String>();
unionSet.addAll(setNo1);
unionSet.addAll(setNo2);
for (String s : unionSet) {
System.out.println(s);
}

System.out.println("----------------------------");

Set<String> substractSet = new HashSet<String>();
substractSet.addAll(unionSet);

substractSet.removeAll(setNo1);
for (String s : substractSet) {
System.out.println(s);
}

ashkanksh
شنبه 05 آذر 1390, 22:30 عصر
همونطور که حسین خان گفت! با متد های add و remove به راحتی میشه نوشتش!

من کد حسین آقا رو کامل کردم واسه اشتراکش:
Set<String> setNo1 = new HashSet<String>();
Set<String> setNo2 = new HashSet<String>();

setNo1.add("2");
setNo1.add("setNo1: Name2");
setNo1.add("setNo1: Name3");
setNo1.add("setNo1: Name4");

setNo2.add("2");
setNo2.add("setNo2: Name6");
setNo2.add("setNo2: Name7");
setNo2.add("setNo2: Name8");

Set<String> unionSet = new HashSet<String>();
unionSet.addAll(setNo1);
unionSet.addAll(setNo2);
for (String s : unionSet) {
System.out.println(s);
}

System.out.println("----------------------------");

Set<String> substractSet = new HashSet<String>();
substractSet.addAll(unionSet);

substractSet.removeAll(setNo1);
for (String s : substractSet) {
System.out.println(s);
}
System.out.println("----------------------------");

Set<String> substractSet2 = new HashSet<String>();
substractSet2.addAll(unionSet);

substractSet2.removeAll(setNo2);

Set<String> eshterak = new HashSet<String>();
eshterak.addAll(unionSet);
eshterak.removeAll(substractSet);
eshterak.removeAll(substractSet2);
for (String s :eshterak) {
System.out.println(s);
}