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”上打错了,忘了一个}很好