【问题标题】:How to Generate dynamic arraylist in java如何在java中生成动态数组列表
【发布时间】:2015-01-02 08:08:27
【问题描述】:

我需要获取arraylist 的动态数组列表。我有一个使用 findAll 方法从 myTable 派生的数组列表。它给出了一些存储在表中的列表值,并创建了一个类似于 findAllArraylist 的数组列表。

例如。

List<Model> findAllArraylist= myDAO.findll();

然后,我正在创建一个数组来存储 findAllArraylist 中的单个元素值,使用 for 循环如下,

int[] myIntArray = new int[];         
for (int i= 0; i< findAllArraylist.size(); i++) {   
      int val = findAllArraylist.get(i).getMemberCount();
      myIntArray.add(val);      
  }  

然后,我将使用 LinkedHashMap 删除 myIntArray 的重复项。所以,如果我在该列表中有一个列的冗余值,它应该被过滤并且是唯一的。

myIntArray= new ArrayList<Integer>(new LinkedHashSet<Integer>(myIntArray))

现在,如果 findAllArraylist 中的成员计数更多,我只有一个成员计数值。

例如。

myIntArray[1,2,5,5,1,2,5,1,2,5,5,1,2,5] 

应该是

myIntArray[1,2,5]

现在我需要根据 myIntArray 值创建更多数组列表。如果 myIntArray 大小为 3,我必须创建 3 个数组列表,如果 myIntArray 大小为 10,我必须创建 10 个数组列表。

我正在使用 if 语句在 findAllArraylist 的 for 循环下制作如下所示的数组列表,

    for(int i = 0; i< findAllArraylist.size();i++){
        Model temp = (Model) findAllArraylist.get(i);

        if(myIntArray.size()==3){
            List<Model> arraylist1= new ArrayList(Model); 
            List<Model> arraylist2= new ArrayList(Model); 
            List<Model> arraylist3= new ArrayList(Model);   

            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(0)) {
                arraylist1.add(temp);
            }
            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(1)) {
                arraylist2.add(temp);
            }
            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(2)) {
                arraylist3.add(temp);
            }
        }

        if(myIntArray.size()==2){
            List<Model> arraylist1= new ArrayList(Model); 
            List<Model> arraylist2= new ArrayList(Model); 

            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(0)) {
                arraylist1.add(temp);
            }
            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(1)) {
                arraylist2.add(temp);
            }
        }

        if(myIntArray.size()==3){
            List<Model> arraylist1= new ArrayList(Model); 

            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(0)) {
                arraylist1.add(temp);
            }
        }
    }       

我必须将其作为单个代码作为数组列表的动态创建。谁能给我一个关于如何做到这一点的想法。

我在这里做了一个示例..http://jsfiddle.net/L6Lqafue/

【问题讨论】:

  • 这里的示例代码包含编译错误。请给出实际代码。例如: int[] myIntArray = new int[]; List arraylist1= new ArrayList(Model);甚至不会编译。
  • 对不起,现在已经清除了...jsfiddle.net/L6Lqafue/2

标签: java for-loop arraylist


【解决方案1】:

你所拥有的for循环的主体可以转换成一个循环语句,如下所示:

List<List<Model>> myLists= new ArrayList<>();
for(int i = 0; i< studlist.size();i++){
        Model temp = (Model) findAllArraylist.get(i);

        for(int j = 0; j< myIntArray.size(); j++){
            List<Model> arraylist= new ArrayList<Model>();
            myLists.add(arraylist)
            if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(j)) {
                arraylist.add(temp);
            }
        }
}

通过这种方式,您之前创建的硬编码列表将添加到 myLists。

【讨论】:

  • 我如何访问它们。参考我的问题,我想获取 arraylist1 或 arraylist2 并使用 System.out.print(); 打印它们
  • 我实际上无法为每个 myIntArray.size() 保存单独的数组列表。样品在这里jsfiddle.net/aw8f2nc6
  • arrayLists 保存在 myLists 中。
  • myLists 包含所有列表值,但我需要将 id 1 值作为单独的列表,将 id 3 值作为单独的列表,将 id 4 值作为单独的列表......
【解决方案2】:

您可能尝试使用Map 而不是List

        Map<Integer, Model> map = new HashMap<Integer,Model>();

       for(int i = 0; i< studlist.size();i++)
       {
             Model temp = (Model) findAllArraylist.get(i);
           for(int j=0; j<myIntArray.size(); j++)
            {
              if (findAllArraylist.get(i).getMemberCount()== myIntArray.get(j)) 
                {
                    map.put(j,temp)//Insert elements with `J` index as you check them with `myIntArray`
                }
            }
         }

【讨论】:

  • 我如何访问它们。参考我的问题,我想获取 arraylist1 或 arraylist2 并使用 System.out.print(); 打印它们
  • 我需要将它们分别保存为一个变量,并需要将它们显示为一个单独的列表......我遵循了这个解决方案,示例在这里jsfiddle.net/o0jvc5jy
  • 所以你得到了你想要的......?
  • 不,我仍然无法获得分组数组列表......这就是我要求的......我需要将数组列表 1 作为 Student("1726", "John", 1), Student( "7765", "Sam", 1), Student("3442", "Mark", 1).....arraylist2 as Student("4321", "Max", 3), Student("2234", " Andrew", 3)..... 和 arraylist3 as Student("5223", "Michael", 4)
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 2021-11-21
  • 2014-09-19
  • 2015-04-04
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多