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语句。我测试了它,它确实返回了多个值。仍然可以为每个循环使用。答案更新。如果这也不起作用,你可以吗请分享你的完整代码?