private static List < String > getList(){
List < String > list = new ArrayList();
StringBuffer str = new StringBuffer();
     for (int i = 0;i < 2;i++) {
     list.add(str.append(i).toString());
     }
     return list;

public static void main(String[] args) { 
String returnValue = "";
List < String > listFromDb = getList();
List < String > list = new ArrayList();
list = listFromDb;
for (int i = 0;i < listFromDb.size();i++) {
String str = listFromDb.get(i);
StringBuffer strBuffer = new StringBuffer();
for (int j = 0;j < 2;j++) {
if (str.equals(strBuffer.append(j).toString())) {
list.add(strBuffer.append(j).toString());
break;
}
}
}
for (int i = 0;i < list.size();i++) {
returnValue += list.get(i);
}
System.out.println(returnValue);

解决方案 »

  1.   

    你又来、、、、放在程序里debug跑一编不是很清楚。这个没上次那个3言2语就能讲清除,我给你标个注释你自己去跑一编好不?
      

  2.   

    首先要清楚getList()这个函数得到的是一个包含什么样的list{"0";"01"}这是程序开始的时候listFromDb包含的内容,虽然list初始化了,但是由于这句代码list = listFromDb;这是一个引用的赋值,list和listFromDb都指向了同一块内存,所以后面对list的添加实际上就是对listFromDb的添加(list.add(strBuffer.append(j).toString());)
    //在第一个大循环中,由于listFromDb的内容不断增加
    //所以第一个循环实际上循环了4次
    //在第一次和第二次循环进入add函数
    for (int i = 0;i < listFromDb.size();i++) {
    String str = listFromDb.get(i);
    StringBuffer strBuffer = new StringBuffer();
    for (int j = 0;j < 2;j++) {
    if (str.equals(strBuffer.append(j).toString())) {
    list.add(strBuffer.append(j).toString());
    break;
    }
    }
    }
    我们可以得到{"0""01""00""011"}这个list
      

  3.   

    import java.util.ArrayList;
    import java.util.List;public class Test01 { private static List<String> getList() {
    List<String> list = new ArrayList();//新建一个
    StringBuffer str = new StringBuffer();//stringbudder你就把他当成string就好
    for (int i = 0; i < 2; i++) {//循环2次,i=0,i=1
    list.add(str.append(i).toString());//list中俩个值 0和01
    }
    return list;
    } public static void main(String[] args) {
    String returnValue = "";
    List<String> listFromDb = getList();//listFromDb中俩个值0和01
    List<String> list = new ArrayList();
    list = listFromDb;//list和listFromDb指向同一个引用了,可以理解为他们是同一个“人”
    for (int i = 0; i < listFromDb.size(); i++) {//size是大小,等于2
    String str = listFromDb.get(i);//listFromDb中俩个值0和01
    StringBuffer strBuffer = new StringBuffer();
    for (int j = 0; j < 2; j++) {
    if (str.equals(strBuffer.append(j).toString())) {
    list.add(strBuffer.append(j).toString());
    break;//应该就他是知识点了,break是跳出本循环就是直接又回到上面最近的那个
          //for。而且j又从0开始,但是下面的那句strBuffer.append(j)可是一直在添加
          //所以后边会有011
    }
    }
    }
    for (int i = 0; i < list.size(); i++) {
    returnValue += list.get(i);//list4个值 0 01 00 011
    }
    System.out.println(returnValue);
    }
    }