public Male getMale() { return male; } public void setMale(Male male) { this.male = male; } public Female getFemale() { return female; } public void setFemale(Female female) { this.female = female; } }
import java.util.ArrayList; import java.util.Iterator; import java.util.List;public class TestLover { public static void main(String[] args) {
//存放男人的list List<Male> mList = new ArrayList<Male>();
//存放女人的list List<Female> fList = new ArrayList<Female>();
//存放情侣的list List<Lover> lList = new ArrayList<Lover>();
//new出吹牛的几个人并放入相对应的list //其实可以把男人和女人做成一个class,但是在配对的时候会麻烦些 Male a = new Male("A"); mList.add(a); Male b = new Male("B"); mList.add(b); Male c = new Male("C"); mList.add(c); Female x = new Female("X"); fList.add(x); Female y = new Female("Y"); fList.add(y); Female z = new Female("Z"); fList.add(z);
//两层for循环进行配对,放入一个list,但是这个list中情侣会有重复现象 //因为一个人是不能同时出现在两对情侣中的,实行一夫一妇制 for (Iterator<Male> iterator = mList.iterator(); iterator.hasNext();) { Male m = (Male) iterator.next(); Lover lover = null; for (Iterator<Female> iterator2 = fList.iterator(); iterator2.hasNext();) { Female f = (Female) iterator2.next(); lover = new Lover(m, f); if(lover.isLiar(m, f)) { continue; } else { lList.add(lover); //打印出有可能是情侣的情侣, System.out.print("===>>"+lover.getMale().getName()); System.out.println("===>>"+lover.getFemale().getName()); } } }
(z!=c && x!=c) 那就说明y==c
综合上面条件可是出 z==a
public Female(String name)
{
this.name = name;
}
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}public class Male { private String name; public Male(String name)
{
this.name = name;
}
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}public class Lover { private Male male;
private Female female;
public Lover(Male male, Female female)
{
this.female = female;
this.male = male;
} public boolean isLiar(Male male, Female female)
{
if(male.getName().equalsIgnoreCase("A")&&female.getName().equalsIgnoreCase("X")
||male.getName().equalsIgnoreCase("B")&&female.getName().equalsIgnoreCase("Y")
||male.getName().equalsIgnoreCase("C")&&female.getName().equalsIgnoreCase("Z"))
{
return true;
}
else
{
return false;
}
}
public Male getMale() {
return male;
} public void setMale(Male male) {
this.male = male;
} public Female getFemale() {
return female;
} public void setFemale(Female female) {
this.female = female;
}
}
import java.util.Iterator;
import java.util.List;public class TestLover { public static void main(String[] args) {
//存放男人的list
List<Male> mList = new ArrayList<Male>();
//存放女人的list
List<Female> fList = new ArrayList<Female>();
//存放情侣的list
List<Lover> lList = new ArrayList<Lover>();
//new出吹牛的几个人并放入相对应的list
//其实可以把男人和女人做成一个class,但是在配对的时候会麻烦些
Male a = new Male("A");
mList.add(a);
Male b = new Male("B");
mList.add(b);
Male c = new Male("C");
mList.add(c);
Female x = new Female("X");
fList.add(x);
Female y = new Female("Y");
fList.add(y);
Female z = new Female("Z");
fList.add(z);
//两层for循环进行配对,放入一个list,但是这个list中情侣会有重复现象
//因为一个人是不能同时出现在两对情侣中的,实行一夫一妇制
for (Iterator<Male> iterator = mList.iterator(); iterator.hasNext();) {
Male m = (Male) iterator.next();
Lover lover = null;
for (Iterator<Female> iterator2 = fList.iterator(); iterator2.hasNext();) {
Female f = (Female) iterator2.next();
lover = new Lover(m, f);
if(lover.isLiar(m, f))
{
continue;
}
else
{
lList.add(lover);
//打印出有可能是情侣的情侣,
System.out.print("===>>"+lover.getMale().getName());
System.out.println("===>>"+lover.getFemale().getName());
}
}
}
List<Lover> l1 = new ArrayList<Lover> ();
l1 = lList.subList(0, 2);
List<Lover> l2 = new ArrayList<Lover> ();
l2 = lList.subList(2,4);
List<Lover> l3 = new ArrayList<Lover> ();
l3 = lList.subList(4, lList.size());
for (Iterator<Lover> iterator1 = l1.iterator(); iterator1.hasNext();) {
Lover lover1 = (Lover) iterator1.next();
for (Iterator<Lover> iterator2 = l2.iterator(); iterator2.hasNext();) {
Lover lover2 = (Lover) iterator2.next();
if(lover1.getMale().getName()==lover2.getMale().getName()
||lover1.getFemale().getName() == lover2.getFemale().getName())
{
continue;
}
else
{
for (Iterator<Lover> iterator3 = l3.iterator(); iterator3.hasNext();) {
Lover lover3 = (Lover) iterator3.next();
if(lover1.getMale().getName()==lover2.getMale().getName()
||lover1.getFemale().getName() == lover2.getFemale().getName()
||lover1.getMale().getName()==lover3.getMale().getName()
||lover1.getFemale().getName() == lover3.getFemale().getName()
||lover2.getFemale().getName() == lover3.getFemale().getName()
||lover2.getMale().getName()==lover3.getMale().getName())
{
//如果某个人同时出现在一对以上的情侣中,直接跳出此次循环
continue;
}
else
{
System.out.print(lover1.getMale().getName());
System.out.println(lover1.getFemale().getName());
System.out.print(lover2.getMale().getName());
System.out.println(lover2.getFemale().getName());
System.out.print(lover3.getMale().getName());
System.out.println(lover3.getFemale().getName());
}
}
}
}
}
}
}