我收到了这些代码:
String[] s1={"Samsung Smarphone","20MB"};
String[] s11={"Apple Smarphone","25MB"};
String[] s2={"Samsung Smarphone","3 in"};
String[] s22={"Apple Smarphone","6 in"};
String[] s3={"Samsung Smarphone","3GB"};
String[] s33={"Apple Smarphone","2 GB"};
String[] s4={"Apple Smarphone","iphone1"};
String[] s44={"Apple Smarphone","iphone2"};
String[] s444={"Apple Smarphone","iphone3"};
List<String[]> l1=new ArrayList<String[]>();
l1.add(s1);
l1.add(s11);
List<String[]> l2=new ArrayList<String[]>();
l2.add(s2);
l2.add(s22);
List<String[]> l3=new ArrayList<String[]>();
l3.add(s3);
l3.add(s33);
List<String[]> l4=new ArrayList<String[]>();
l4.add(s4);
l4.add(s44);
l4.add(s444);
Vector<List<String[]>> myV=new Vector<List<String[]>>();
myV.add(l1);
myV.add(l2);
myV.add(l3);
myV.add(l4);
List<String[]> resultL=new ArrayList<String[]>();
String[] mainS={"Samsung Smarphone","Apple Smarphone","Apple Smarphone","Apple Smarphone"};
for (int i=0; i<mainS.length; i++){
String[] theRow=new String[myV.size()+1];
for (int k=0; k<myV.size(); k++){
List<String[]> smallList=(List<String[]>)myV.elementAt(k);
String[][] small2DArr=new String[smallList.size()][2];
smallList.toArray(small2DArr);
String strMain=mainS[i];
int rows=small2DArr.length;
int cols=2;
for( int y=0; y<rows; y++)
{
for(int z=0; z<cols; z++){
String str=small2DArr[y][z];
if(strMain.equals(str))
{
theRow[0]=strMain;
theRow[k+1]=small2DArr[y][1];
}
}
}
}
resultL.add(theRow);
}
for(int u=0; u<resultL.size(); u++)
{
String[] myR=resultL.get(u);
//int ddd=xxx.length;
System.out.println("\n----------------\n");
for (String s : myR)
{
System.out.print(s +"\t");
}
}
结果是:
Samsung Smarphone 20MB 3 in 3GB null
----------------
Apple Smarphone 25MB 6 in 2 GB iphone3
----------------
Apple Smarphone 25MB 6 in 2 GB iphone3
----------------
Apple Smarphone 25MB 6 in 2 GB iphone3
以上结果不正确。我想要这样的结果:
Samsung Smarphone 20MB 3 in 3GB null
----------------
Apple Smarphone 25MB 6 in 2 GB iphone1
----------------
Apple Smarphone 25MB 6 in 2 GB iphone2
----------------
Apple Smarphone 25MB 6 in 2 GB iphone3
你能帮我解决一下吗?
答案 0 :(得分:0)
这里的主要问题是平等检查,if(strMain.equals(str))
。由于所有三个智能手机代表相同的公司名称,您得到错误的值(以先到者为准)。
对于这类问题,最好不要根据公司名称(这里是苹果智能手机)进行检查。想想你将如何设计数据库。
如果您为相同的表示设计数据库,您永远不会使用公司名称作为主键吗?因为一家公司可以在市场上拥有多部手机。
我的建议是用豆而不是普通的字符串。 bean包含公司名称和id。覆盖bean的equals方法。如下所示,
class MyBean{
private String company;
private int id;
public MyBean(int id, String company) {
this.id = id;
this.company = company;
}
@Override
public boolean equals(Object obj) {
return id == ((MyBean)obj).id;
}
@Override
public String toString() {
return company;
}
}
这只是一个例子。您可以按照自己的算法进行均衡。