Java 如何通过从其他列表中读取一个值来筛选对象列表

Java 如何通过从其他列表中读取一个值来筛选对象列表,java,collections,Java,Collections,我们有一些数据以json的形式从UI接收并转换为Java对象,在此基础上我们必须过滤主列表并将该数据对象存储在filterList中 public class DataObject implements Serializable{ private String mTaskName; private long mCaseNumber; ...... } //Fetching data list from session List<DataObject> listData =(Li

我们有一些数据以json的形式从UI接收并转换为Java对象,在此基础上我们必须过滤主列表并将该数据对象存储在filterList中

public class DataObject implements Serializable{

private String mTaskName;
private long mCaseNumber;
......

}

//Fetching data list from session
List<DataObject> listData =(List<DataObject>)session.getAttribute("DATA_LIST");

//Variable to hold filtered data
List<DataObject> filteredData = new ArrayList<DataObject>();



public class FilterCriteria
{
private String filterName;
private String[] value;
.....
}
公共类数据对象实现可序列化{
私有字符串mTaskName;
私人长麦卡森编号;
......
}
//从会话获取数据列表
List listData=(List)session.getAttribute(“数据列表”);
//用于保存过滤数据的变量
List filteredData=new ArrayList();
公共级过滤标准
{
私有字符串过滤器名称;
私有字符串[]值;
.....
}

例如,如果我们将filterName作为任务名和值[“value1”、“value2”],并且还使用值[“2323232”、“45544”]启用了第二个筛选器案例编号。我们必须在主列表listData上应用此逻辑,并将过滤后的记录存储在filteredData中。如何实现这一点?

Appache Commons Collections CollectionUtils.filter呢?

如果您想按行或按列执行,我希望您也能以这种方式实现它

import java.util.*;
public class HelloWorld{

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

      //Suppose you want to make nxm dimensional list. Then you can set the values as
      int rows=4;
      int columns=5;
      for(int i=0;i<rows;i++)
      {
          two_dimension.add(new ArrayList<String>());
          for(int j=0;j<columns;j++)
          {
              two_dimension.get(i).add("element"+i+j);
          }
      }


      //to accesss your element
      boolean row=true; // lets decide to traverse by row 
      if(row==true)
      {
       for(int i=0;i<rows;i++)
      {
          for(int j=0;j<columns;j++)
          {
              System.out.println(two_dimension.get(i).get(j));
          }
      }
      }

      else
      {
         for(int i=0;i<columns;i++)
      {
          for(int j=0;j<rows;j++)
          {
              System.out.println(two_dimension.get(j).get(i));
          }
      }  
      }

     }
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args)
{
列出二维=新ArrayList();
//假设您想要制作nxm维度列表,那么您可以将这些值设置为
int行=4;
int列=5;

对于(int i=0;i如何处理值[]其中包含我们需要筛选并存储在另一个列表中的所有值。我需要在循环中运行吗?寻找最佳实践我怀疑除了迭代数组元素之外还有其他解决方案。好的,谢谢,这意味着我必须循环筛选值数组并使用此谓词…是的,这是一种方法。但请注意,其他元素将从原始列表中删除,因此如果您需要保留它们,您必须首先克隆列表。从另一个角度来看,此方法只是candy,您可以使用附加的for-each循环自行实现,并将匹配的元素复制到新列表中。这将更有效。