Java 如何将值从一个列表复制到具有不同对象的另一个列表
我有MaterialInfo和StyleInfo,我想根据StyleNumber与materialNumber的匹配设置styleDescription。我使用2作为循环,是否有其他解决方案 材料信息:Java 如何将值从一个列表复制到具有不同对象的另一个列表,java,Java,我有MaterialInfo和StyleInfo,我想根据StyleNumber与materialNumber的匹配设置styleDescription。我使用2作为循环,是否有其他解决方案 材料信息: class MaterailInfo { private String materialNumber; private String materialDescription; public MaterailInfo(String materialNumber, Stri
class MaterailInfo {
private String materialNumber;
private String materialDescription;
public MaterailInfo(String materialNumber, String materialDescription) {
this.materialNumber = materialNumber;
this.materialDescription = materialDescription;
}
// getter setter methods
}
class StyleInfo {
private String StyleNumber;
private String styleDescription;
public StyleInfo(String styleNumber, String styleDescription) {
StyleNumber = styleNumber;
this.styleDescription = styleDescription;
}
// getter setter toString methods
}
public class TEst12 {
public static void main(String[] args) {
List<MaterailInfo> mList = new ArrayList<MaterailInfo>();
mList.add(new MaterailInfo("a", "a-desc"));
mList.add(new MaterailInfo("b", "b-desc"));
mList.add(new MaterailInfo("c", "c-desc"));
List<StyleInfo> sList = new ArrayList<StyleInfo>();
sList.add(new StyleInfo("a", ""));
sList.add(new StyleInfo("b", ""));
sList.add(new StyleInfo("c", ""));
for (MaterailInfo m : mList) {
for (StyleInfo s : sList) {
if (s.getStyleNumber().equals(m.getMaterialNumber())) {
s.setStyleDescription(m.getMaterialDescription());
}
}
}
System.out.println(sList);
}
}
样式信息:
class MaterailInfo {
private String materialNumber;
private String materialDescription;
public MaterailInfo(String materialNumber, String materialDescription) {
this.materialNumber = materialNumber;
this.materialDescription = materialDescription;
}
// getter setter methods
}
class StyleInfo {
private String StyleNumber;
private String styleDescription;
public StyleInfo(String styleNumber, String styleDescription) {
StyleNumber = styleNumber;
this.styleDescription = styleDescription;
}
// getter setter toString methods
}
public class TEst12 {
public static void main(String[] args) {
List<MaterailInfo> mList = new ArrayList<MaterailInfo>();
mList.add(new MaterailInfo("a", "a-desc"));
mList.add(new MaterailInfo("b", "b-desc"));
mList.add(new MaterailInfo("c", "c-desc"));
List<StyleInfo> sList = new ArrayList<StyleInfo>();
sList.add(new StyleInfo("a", ""));
sList.add(new StyleInfo("b", ""));
sList.add(new StyleInfo("c", ""));
for (MaterailInfo m : mList) {
for (StyleInfo s : sList) {
if (s.getStyleNumber().equals(m.getMaterialNumber())) {
s.setStyleDescription(m.getMaterialDescription());
}
}
}
System.out.println(sList);
}
}
TEst12:
class MaterailInfo {
private String materialNumber;
private String materialDescription;
public MaterailInfo(String materialNumber, String materialDescription) {
this.materialNumber = materialNumber;
this.materialDescription = materialDescription;
}
// getter setter methods
}
class StyleInfo {
private String StyleNumber;
private String styleDescription;
public StyleInfo(String styleNumber, String styleDescription) {
StyleNumber = styleNumber;
this.styleDescription = styleDescription;
}
// getter setter toString methods
}
public class TEst12 {
public static void main(String[] args) {
List<MaterailInfo> mList = new ArrayList<MaterailInfo>();
mList.add(new MaterailInfo("a", "a-desc"));
mList.add(new MaterailInfo("b", "b-desc"));
mList.add(new MaterailInfo("c", "c-desc"));
List<StyleInfo> sList = new ArrayList<StyleInfo>();
sList.add(new StyleInfo("a", ""));
sList.add(new StyleInfo("b", ""));
sList.add(new StyleInfo("c", ""));
for (MaterailInfo m : mList) {
for (StyleInfo s : sList) {
if (s.getStyleNumber().equals(m.getMaterialNumber())) {
s.setStyleDescription(m.getMaterialDescription());
}
}
}
System.out.println(sList);
}
}
公共类TEst12{
公共静态void main(字符串[]args){
List mList=new ArrayList();
添加(新材料信息(“a”、“a-desc”);
添加(新材料信息(“b”、“b-desc”);
添加(新材料信息(“c”、“c-desc”);
List sList=new ArrayList();
添加(新的样式信息(“a”,“a”);
添加(新的样式信息(“b”和“));
添加(新的样式信息(“c”和“));
对于(MaterialInfo m:mList){
for(样式信息:sList){
如果(s.getStyleNumber().equals(m.getMaterialNumber())){
s、 setStyleDescription(m.getMaterialDescription());
}
}
}
系统输出打印LN(sList);
}
}
如果您使用地图
而不是列表
来存储数据,则只需执行一个循环即可:
Map<String, String> mMap = new HashMap<String, String>();
mMap.put("a", "a-desc");
mMap.put("b", "b-desc");
mMap.put("c", "c-desc");
Map<String, String> sMap = new HashMap<String, String>();
sMap.put("a", "");
sMap.put("b", "");
sMap.put("c", "");
for (Map.Entry<String, String> entry : mMap.entrySet()) {
sMap.put(entry.getKey(), mMap.get(entry.getKey());
}
Map mMap=newhashmap();
mMap.put(“a”、“a-desc”);
mMap.put(“b”、“b-desc”);
mMap.put(“c”、“c-desc”);
Map sMap=newhashmap();
sMap.put(“a”和“);
sMap.put(“b”和“);
sMap.put(“c”和“);
对于(Map.Entry:mMap.entrySet()){
sMap.put(entry.getKey(),mMap.get(entry.getKey());
}
如果样式编号与任何已知的物料编号不匹配,此代码将使样式描述为空。如果您的编号不能重复,使用HashMap而不是类可能会快一点
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class Demo {
public static void main(String[] args) {
HashMap<String, String> mList = new HashMap();
HashMap<String, String> sList = new HashMap();
mList.put("a", "a-desc");
mList.put("b", "b-desc");
mList.put("c", "c-desc");
sList.put("a", "");
sList.put("b", "");
sList.put("c", "");
Iterator entries = sList.entrySet().iterator();
while (entries.hasNext()) {
Entry entry = (Entry) entries.next();
if (mList.containsKey(entry.getKey())) {
sList.put((String) entry.getKey(), mList.get(entry.getKey()));
}
}
for (Map.Entry<String, String> entry : sList.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
import java.io.*;
导入java.util.*;
导入java.util.Map.Entry;
公开课演示{
公共静态void main(字符串[]args){
HashMap mList=新的HashMap();
HashMap sList=新的HashMap();
列表放置(“a”、“a-desc”);
列表放置(“b”、“b-desc”);
列表放置(“c”、“c-desc”);
sList.put(“a”,“a”);
sList.put(“b”和“);
sList.put(“c”和“);
迭代器条目=sList.entrySet().Iterator();
while(entries.hasNext()){
Entry=(Entry)entries.next();
if(mList.containsKey(entry.getKey())){
sList.put((字符串)entry.getKey(),mList.get(entry.getKey());
}
}
for(Map.Entry:sList.entrySet()){
System.out.println(entry.getKey()+“”+entry.getValue());
}
}
}
您可以像这样使用一个for循环
for (int i = 0; i < mList.size(); i++) {
sList.get(i).setStyleDescription(mList.get(i).getMaterialDescription());
}
for(int i=0;i
注意:我假设您的列表在大小方面是平衡的。我认为Java 8可能有一个非常好的方法来使用streams处理这个问题。谢谢@Tim,但我仅限于Java 6:(你能在这里使用Map
而不是List
吗?你想提高复杂性吗?是的,如果没有重复项的话。Map是一个更好的选择。为什么你要排除If语句呢?If
语句是不必要的,因为查找过程隐式地执行此检查。我想我也可以使用一个循环来完成List。)呃,使用地图。让我发布解决方案