Java 用具有特定值的现有列表对象中的对象填充列表

Java 用具有特定值的现有列表对象中的对象填充列表,java,Java,我有一个要迭代的对象列表,对于所有具有特定值的对象,将它们添加到一个新列表中。我可以那样做吗?或者我需要一张地图? 示例代码: List<Object> object = new ArrayList(); Iterator iterator = object.iterator(); while(iterator.hasNext()){ Object listobject = (Object)iterator.next(); if(object.getId() == 1

我有一个要迭代的对象列表,对于所有具有特定值的对象,将它们添加到一个新列表中。我可以那样做吗?或者我需要一张地图? 示例代码:

List<Object> object = new ArrayList();
Iterator iterator = object.iterator();
while(iterator.hasNext()){
    Object listobject = (Object)iterator.next();
    if(object.getId() == 1){
       newlist.add(object);
List object=newarraylist();
迭代器迭代器=object.Iterator();
while(iterator.hasNext()){
对象listobject=(对象)迭代器.next();
if(object.getId()==1){
添加(对象);
上面的代码只添加第一个具有此id的对象。如何在新列表中添加所有具有此id的对象?
谢谢您的建议。

您可以使用guava库。它允许您使用谓词筛选列表。因此,您只能获得列表中标识为所需元素的元素

例如:


您正在寻找类似的东西吗?但是请注意,最好对每个循环使用它,而不是迭代器

public class ObjectCollector {

    static class LstObj {
        int id;
        String name;

        public int getId() {
            return id;
        }

        public LstObj(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public String toString() {
            return "LstObj [id=" + id + ", name=" + name + "]";
        }
    }


    public static void main(String[] args) {
        List newlist = new ArrayList();
        List objects = new ArrayList();

        //Populating random objects
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(2, "Name 2"));
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(3, "Name 3"));
        objects.add(new LstObj(4, "Name 4"));

        Iterator iterator = objects.iterator();
        while(iterator.hasNext()){
            LstObj listobject = (LstObj)iterator.next();
            if(listobject.getId() == 1){
               newlist.add(listobject);
            }
        }
        System.out.println(newlist);
    }

}
对于每种方法

import java.util.ArrayList;
import java.util.List;

public class ObjectCollector {

    static class LstObj {
        int id;
        String name;

        public int getId() {
            return id;
        }

        public LstObj(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public String toString() {
            return "LstObj [id=" + id + ", name=" + name + "]";
        }
    }

    public static void main(String[] args) {
        List<LstObj> newlist = new ArrayList<LstObj>();
        List<LstObj> objects = new ArrayList<LstObj>();

        // Populating random objects
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(2, "Name 2"));
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(1, "Name 1"));
        objects.add(new LstObj(3, "Name 3"));
        objects.add(new LstObj(4, "Name 4"));

        for (LstObj obj : objects) {
            if (obj.getId() == 1) {
                newlist.add(obj);
            }
        }

        System.out.println(newlist);
    }

}
import java.util.ArrayList;
导入java.util.List;
公共类对象收集器{
静态类LstObj{
int-id;
字符串名;
公共int getId(){
返回id;
}
公共LstObj(int-id,字符串名){
this.id=id;
this.name=名称;
}
公共字符串toString(){
返回“LstObj[id=“+id+”,name=“+name+”]”;
}
}
公共静态void main(字符串[]args){
List newlist=newarraylist();
列表对象=新的ArrayList();
//填充随机对象
添加(新的LstObj(1,“名称1”);
添加(新的LstObj(2,“名称2”);
添加(新的LstObj(1,“名称1”);
添加(新的LstObj(1,“名称1”);
添加(新的LstObj(3,“名称3”);
添加(新的LstObj(4,“名称4”);
用于(LstObj对象:对象){
if(obj.getId()==1){
newlist.add(obj);
}
}
System.out.println(newlist);
}
}

您确定输入列表中有多个Id为1的对象吗?我们可以有一个示例输入和输出吗?我想您的代码示例中有一个错误,因为对象是if(object.getId()==1){newlist.add(object)中的列表;Thanx用于快速回复。是的,我有10个id相同的对象,只返回第一个。您编写的问题代码完全相同,只返回第一个元素。无论如何,thanz谢谢您的尝试。抱歉,但您所说的仅返回第一个元素是什么意思?我得到了id为1的所有对象的列表。您好,再次感谢您!上面的代码只返回第e第一个id为1的对象。我认为当找到id为1的第一个对象时,它会停止迭代。有什么建议吗?我不认为它会停止迭代,除非你在其中放入break语句。我测试了它,它确实返回了多个值。仍然可以为每个循环使用。答案更新。如果这也不起作用,你可以吗请分享你的完整代码?