当前位置:编程学习 > JAVA >>

ID字符串匹配List中的数据,获得对应的name[算法]

--------------------编程问答--------------------

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;
}

}
--------------------编程问答-------------------- 修改了一下

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;
}

}
--------------------编程问答-------------------- 除了双层嵌套外没有别的更好的做法么 --------------------编程问答-------------------- 么你可以考虑使用Map来放。 --------------------编程问答-------------------- 如果你的id字符串内容和list元素都是有序或FIFO的,那一个for就可以解决了。否则还是照LS所说做map吧 --------------------编程问答-------------------- 希望能给你点启发

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;
}
}
--------------------编程问答-------------------- 使用 map 不错 --------------------编程问答-------------------- 正则的话是不是性能低些 --------------------编程问答-------------------- 嵌套for循环。算法复杂度低,效率已经是最快的了
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,