Java 获取ArrayList<;字符串>;来自ArrayList<;定制类>;(将字符串数据作为数组而不是foreach返回的LF方法)

Java 获取ArrayList<;字符串>;来自ArrayList<;定制类>;(将字符串数据作为数组而不是foreach返回的LF方法),java,class,arraylist,get,Java,Class,Arraylist,Get,这是我的自定义类(为了可读性,我翻译了名称并省略了构造函数等) 因此,我使用这个类将所有数据存储为ArrayList 每次我需要ArrayList中的某些内容时,都会使用foreach行,但它看起来太乱了。有没有干净的方法来解决这个问题?您必须提供自定义类MyClass的getter,我使用List接口作为返回类型,而不是ArrayList,因为它更灵活 您可以试试这个,如果有任何问题,请告诉我。 请查找代码段: import java.util.ArrayList; import java

这是我的自定义
(为了可读性,我翻译了名称并省略了构造函数等)

因此,我使用这个类将所有数据存储为
ArrayList


每次我需要ArrayList中的某些内容时,都会使用foreach行,但它看起来太乱了。有没有干净的方法来解决这个问题?

您必须提供自定义类MyClass的getter,我使用List接口作为返回类型,而不是ArrayList,因为它更灵活
您可以试试这个,如果有任何问题,请告诉我。
请查找代码段:

 import java.util.ArrayList;
 import java.util.List;
   class Test{

        private List<MyClass> getResources() {
            // TODO Auto-generated method stub
                // Use your business logic over here
              ----------------------------------
            return new ArrayList<MyClass>();
        }
        // This is your method which will returns all the names
        public List<String> getAllNames(){
            List<String> names = new ArrayList<String>();
            List<MyClass> items = getResources();
            for (MyClass myClass : items) {
                names.add(myClass.getName());
            }
            return names;
        }
    }

您必须提供自定义类MyClass的getter,我使用List接口作为返回类型,而不是ArrayList,因为它更灵活
您可以试试这个,如果有任何问题,请告诉我。
请查找代码段:

 import java.util.ArrayList;
 import java.util.List;
   class Test{

        private List<MyClass> getResources() {
            // TODO Auto-generated method stub
                // Use your business logic over here
              ----------------------------------
            return new ArrayList<MyClass>();
        }
        // This is your method which will returns all the names
        public List<String> getAllNames(){
            List<String> names = new ArrayList<String>();
            List<MyClass> items = getResources();
            for (MyClass myClass : items) {
                names.add(myClass.getName());
            }
            return names;
        }
    }

有两个明显的解决方案,一个是中间类,比如ClassList,它包含MyClass的私有ArrayList和对其进行操作的方法。如果您需要的不仅仅是一个迭代器,那么这将非常有用。另一个解决方案是将迭代器代码放入MyClass本身。这里使用的是一个中间类

public ClassList {
    ArrayList<MyClass> list = null;

    public void ClassList () {
        if (list == null)
            list = new ArrayList<MyClass> ();
    }


    public ArrayList<String> getAllNames(ArrayList<MyClass> fred) {

        ArrayList<String> names = new ArrayList<String>();

        for (MyClass fred : items) {
            names.add(items.getName());
        }
        return names;
    }
}
公共类列表{
ArrayList list=null;
公共void类列表(){
if(list==null)
list=newarraylist();
}
公共ArrayList GetAllName(ArrayList fred){
ArrayList name=新的ArrayList();
对于(MyClass:项目){
name.add(items.getName());
}
返回姓名;
}
}

看起来米兰在MyClass中添加了一个这样做的例子。所以还有另一种方法。

有两种明显的解决方案,一种是中间类,比如说ClassList,它包含MyClass的私有ArrayList和对其进行操作的方法。如果您需要的不仅仅是一个迭代器,那么这将非常有用。另一个解决方案是将迭代器代码放入MyClass本身。这里使用的是一个中间类

public ClassList {
    ArrayList<MyClass> list = null;

    public void ClassList () {
        if (list == null)
            list = new ArrayList<MyClass> ();
    }


    public ArrayList<String> getAllNames(ArrayList<MyClass> fred) {

        ArrayList<String> names = new ArrayList<String>();

        for (MyClass fred : items) {
            names.add(items.getName());
        }
        return names;
    }
}
公共类列表{
ArrayList list=null;
公共void类列表(){
if(list==null)
list=newarraylist();
}
公共ArrayList GetAllName(ArrayList fred){
ArrayList name=新的ArrayList();
对于(MyClass:项目){
name.add(items.getName());
}
返回姓名;
}
}

看起来米兰在MyClass中添加了一个这样做的例子。所以还有另一种方法。

您必须创建一个方法,该方法迭代arraylist中的所有元素,并将每个名称添加到您将返回的第二个列表中。我还没有读过Java的lambda表达式,但是如果我从我的C#经历中回忆起任何东西,那么您可能可以用Java8来实现这一点

public List<String> getNames(){
  List<String> names = new ArrayList<>();
  List<MyClass> elements = getElements();

  for(MyClass s : elements){
     names.add(s.getName());
  }

  return names;
}
public List getNames(){
列表名称=新的ArrayList();
List elements=getElements();
用于(MyClass s:元素){
name.add(s.getName());
}
返回姓名;
}

您必须创建一个方法,该方法迭代arraylist中的所有元素,并将每个名称添加到将返回的第二个列表中。我还没有读过Java的lambda表达式,但是如果我从我的C#经历中回忆起任何东西,那么您可能可以用Java8来实现这一点

public List<String> getNames(){
  List<String> names = new ArrayList<>();
  List<MyClass> elements = getElements();

  for(MyClass s : elements){
     names.add(s.getName());
  }

  return names;
}
public List getNames(){
列表名称=新的ArrayList();
List elements=getElements();
用于(MyClass s:元素){
name.add(s.getName());
}
返回姓名;
}

尝试遵循以下结构:

public class MyClass {
        private long id;
        private String name, description;
        private int pictureId;
        ...
    }

    public class Itemlist {
        public ArrayList<MyClass> items = new ArayList<MyClass>();

    public ArrayList<String> getAllNames()
    {
        ArrayList<String> names= new ArrayList<String>();
        for (MyClass item : items){
            names.add(item.getName());
        }
    return names;
    }
公共类MyClass{
私人长id;
私有字符串名称、描述;
私有int-pictureId;
...
}
公共类项目列表{
public ArrayList items=new ArayList();
公共ArrayList getAllNames()
{
ArrayList name=新的ArrayList();
对于(MyClass项目:项目){
name.add(item.getName());
}
返回姓名;
}

尝试遵循以下结构:

public class MyClass {
        private long id;
        private String name, description;
        private int pictureId;
        ...
    }

    public class Itemlist {
        public ArrayList<MyClass> items = new ArayList<MyClass>();

    public ArrayList<String> getAllNames()
    {
        ArrayList<String> names= new ArrayList<String>();
        for (MyClass item : items){
            names.add(item.getName());
        }
    return names;
    }
公共类MyClass{
私人长id;
私有字符串名称、描述;
私有int-pictureId;
...
}
公共类项目列表{
public ArrayList items=new ArayList();
公共ArrayList getAllNames()
{
ArrayList name=新的ArrayList();
对于(MyClass项目:项目){
name.add(item.getName());
}
返回姓名;
}

如果您可以导入Apache通用实用程序包,那么它可以是:

    List<String> fieldsValues=
(List<String>)CollectionUtils.collect(beanLs,new BeanToPropertyValueTransformer("fieldNameInBean"));
列出字段值=
(列表)CollectionUtils.collect(beanLs,新BeanPropertyValueTransformer(“fieldNameInBean”);

如果您可以导入Apache通用实用程序包,那么它可以是:

    List<String> fieldsValues=
(List<String>)CollectionUtils.collect(beanLs,new BeanToPropertyValueTransformer("fieldNameInBean"));
列出字段值=
(列表)CollectionUtils.collect(beanLs,新BeanPropertyValueTransformer(“fieldNameInBean”);

我有只需要一行代码的方法,我明天会在我的办公室检查。我有只需要一行代码的方法,我明天会在我的办公室检查。Thanx的快速响应。你的解决方案看起来不错,我会试试这个和@Milian他的解决方案,让你们知道它是否有效。PS:你不必发布所有的getter还有二传,为了可读性,我在问题中给出了它们,但这并不重要:)好的,那么请试试这个,如果你有任何问题,请告诉我。我认为这应该可以。Thanx的快速响应。你的解决方案看起来不错,我会试试这个和@Milian他的解决方案,让你们知道它是否有效。PS:你不必发布所有的答案我把它们放在问题中,以便于阅读,但这并不重要:)好的,那么请试试这个,如果你有任何问题,请告诉我。我认为这应该行。嘿,我相信你在“ArayList”中有一个拼写错误,忘了一个}很好的解决方案,thanx:)已经接受了Shreyos Adikari的回答,我会提高投票率,因为我又获得了两个声誉,别担心:)嘿,我相信你在“ArayList”上打错了,忘了一个}很好