本帖最后由 evoleht 于 2013-01-08 10:50:58 编辑

解决方案 »

  1.   


    import java.util.ArrayList;
    import java.util.List;
    public class Test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    String id_str = "1,2,3";
    List<Vo> list = new ArrayList<Vo>();
    for (int i = 1; i <= 3; i++) {
    Vo vo = new Vo();
    vo.setId(i+"");
    vo.setName("串"+i);
    list.add(vo);
    }
    String name_str = "";
    String attrs[] = id_str.split(",");
    for (int i = 0; i <attrs.length; i++) {
    for (int j = 0; j < list.size(); j++) {
    Vo vo =list.get(j);
    System.out.println("@"+attrs[i]);
    System.out.println("#"+vo.getId());
    if (vo.getId().equals(attrs[i])) {
    if (i==0) {
    name_str = vo.getName();
    }else{
    name_str += ","+vo.getName();
    }
    }
    }
    }
    System.out.println(name_str);
    }}class Vo{
    private String id;
    private String name;
    /**
     * 获取 id
     * @return 返回 id
     */
    public String getId() {
    return id;
    }
    /**
     * 设置 id
     * @param 对id进行赋值
     */
    public void setId(String id) {
    this.id = id;
    }
    /**
     * 获取 name
     * @return 返回 name
     */
    public String getName() {
    return name;
    }
    /**
     * 设置 name
     * @param 对name进行赋值
     */
    public void setName(String name) {
    this.name = name;
    }

    }
      

  2.   

    修改了一下import java.util.ArrayList;
    import java.util.List;
    public class Test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    String id_str = "1,2,3";
    String attrs[] = id_str.split(",");
    List<Vo> list = new ArrayList<Vo>();
    for (int i = 1; i <= 3; i++) {
    Vo vo = new Vo();
    vo.setId(attrs[i-1]);
    vo.setName("串"+attrs[i-1]);
    list.add(vo);
    }
    String name_str = "";

    for (int i = 0; i <attrs.length; i++) {
    for (int j = 0; j < list.size(); j++) {
    Vo vo =list.get(j);
    System.out.println("@"+attrs[i]);
    System.out.println("#"+vo.getId());
    if (vo.getId().equals(attrs[i])) {
    if (i==0) {
    name_str = vo.getName();
    }else{
    name_str += ","+vo.getName();
    }
    }
    }
    }
    System.out.println(name_str);
    }}class Vo{
    private String id;
    private String name;
    /**
     * 获取 id
     * @return 返回 id
     */
    public String getId() {
    return id;
    }
    /**
     * 设置 id
     * @param 对id进行赋值
     */
    public void setId(String id) {
    this.id = id;
    }
    /**
     * 获取 name
     * @return 返回 name
     */
    public String getName() {
    return name;
    }
    /**
     * 设置 name
     * @param 对name进行赋值
     */
    public void setName(String name) {
    this.name = name;
    }

    }
      

  3.   

    如果你的id字符串内容和list元素都是有序或FIFO的,那一个for就可以解决了。否则还是照LS所说做map吧
      

  4.   

    希望能给你点启发package com.study.test;import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class T {
         public static void main(String[] args){
          List<Vo> vos = new ArrayList<Vo>();
          Vo vo = new Vo();
          vo.id = "1";
          vo.name = "jack";
          vos.add(vo);
          Vo vo1 = new Vo();
          vo1.id = "2";
          vo1.name = "jon";
          vos.add(vo1);
          Vo vo2 = new Vo();
          vo2.id = "3";
          vo2.name = "jon1";
          vos.add(vo2);
          Vo vo3 = new Vo();
          vo3.id = "4";
          vo3.name = "jon3";
          vos.add(vo3);
          
          String id_str = "1,4";
          String[] ids = id_str.split(",");
          String values = vos.toString();
          if(ids != null){
          for(String id : ids){
          Matcher m = Pattern.compile("id=" + id + "@name=(.+?)(,|])").matcher(values);
          if(m.find()){
          System.out.println(m.group(1));
          }
          }
          }
          System.out.println(vos);
          }
    }class Vo{
    String id;
    String name;

    public String toString(){
    return "id=" + id + "@name=" + name;
    }
    }
      

  5.   

    嵌套for循环。算法复杂度低,效率已经是最快的了