【问题标题】:How can I change List to List(Array)?如何将列表更改为列表(数组)?
【发布时间】:2017-01-12 21:50:03
【问题描述】:

我想将模型分配给 List(array(models)) 代替 列表(模型)前:

final List<String[]> pageRolesOR = Arrays.asList(new String[]{"Role1"}, new String[]{"Role2"});

final List<String[]> pageRolesAND = Collections.singletonList(new String[]{"Role1", "Role2"});

=> 通过下面的例子我可以得到 List(Model) 但是,请问如何将下面的模型更改为 List(Array(Models))?

List<Page_Roles> pr = Page_Roles.find.where().eq("page_id","4").findList();

提前谢谢你。

【问题讨论】:

  • 您可能需要一个围绕Page_Roles 的包装类,它使用一个数组,findList() 将返回该类。
  • 我不明白,你能告诉我如何将 list(models) 转换为 list(arrays(model.role)) 吗?
  • 我不知道Page_Roles 是什么,所以除了findList() 不能返回数组类型列表之外,我不知道还能告诉你什么。
  • 还不清楚使用List&lt;Model[]&gt; 而不是List&lt;Model&gt; 可以获得什么。我假设你的意思是List&lt;Model[]&gt;。您说的是 List(Array(Models)),而不是 Model,这不是一回事。
  • 你是否想要一个数组对象列表

标签: java playframework ebean


【解决方案1】:

我使用了与 (Maninder Singh) 解决方案相同的方法,除了通过 List 更改 LinkedList 以将 Models.roles 转换为 List 的这个孩子,但仅适用于 AND 而不是 OR..

OR 转换有点困难...^^ 无论如何谢谢,真的谢谢

// Page Statistics Roles as List
List<Page_Roles> pr = Page_Roles.find.where().eq("page_id","4").findList();


// OR
List<String[]> pageRolesOR =  pr.stream().map(Page_Roles::toArray).collect(Collectors.toList());


// AND
List<String> list = new ArrayList<String>();
for(Page_Roles tt:pr) {list.add(tt.role.getName());}  // Getting List of Strings ( Roles.Names )

String[] array = new String[list.size()];
list.toArray(array);                                  // Convert List to Array

List<String[]> pageRolesAND = new ArrayList<String[]>();
pageRolesAND.add(array);                              //Adding Array to List



/*
 * Examples of Directe Puting Values  
final List<String[]> pageRolesOR = Arrays.asList(new String[]{"Rôle Administration"}, new String[]{"Rôle Qualité"});
final List<String[]> pageRolesAND = Collections.singletonList(new String[]{"Rôle Administration", "Rôle Qualité"});
*/

【讨论】:

    【解决方案2】:
    import java.lang.reflect.Array;
    import java.util.LinkedList;
    
    public class ArrayToList {
        public static void main(String[] args) {
            LinkedList list = new LinkedList();
            for(int i = 0; i < 10; i++) {
                list.add(i+""); //Taking String objects in the list
            }
            Array[] arr = (Array[])list.toArray();  //this becomes array of Strings
            LinkedList listFinal = new LinkedList();
            for(int i = 0; i < 10; i++) {
                list.add(arr); //simply adding same array into the whole LinkedList 
                                //you can add different arrays.
                //So the List(String) --> List(Array(String))
            }
    
            String[] strArray = new String[10];
            for(int j = 0; j< 10; j++){
                strArray[j] = j+"";   //creating a String array
            }
            LinkedList list2 = new LinkedList();
            for(int i = 0; i < 10; i++) {
                list2.add(strArray[i]); //Taking String array in the list
            }
            Array[] arr2 = (Array[])list2.toArray();
            LinkedList listFinal2 = new LinkedList();
            for(int i = 0; i < 10; i++) {
                listFinal2.add(arr2); //simply adding same array of array into the whole LinkedList 
                //So the List(String[]) --> List(Array(String[]))
            }
        }
    }
    

    【讨论】:

    • 嗨,这对我有很大帮助:Collections.singletonList(new String[]{"Rôle Administration", "Rôle Qualité"});一个包含许多数组的列表怎么样?此处描述:imgur.com/a/0p6ay
    • 它的帮助太好了。我不确定我是否正确地回答了你的问题。但如果你看到最后一行。最后一个 for 循环是创建多个数组的列表。基本上,您可以将任何对象添加到列表中。因此,数组将充当列表的对象。如果不清楚,请告诉我。
    • 原谅 moi 但最后一行没有创建多个数组,它创建了一个具有多个值的数组:看看这个 imgur.com/a/QukRU 无论如何我真的很感激 :) 亲亲
    • 对不起,你是对的,它不是创建多个数组,有点困惑。我更新了用于创建多个数组列表的代码。 :)
    • 对不起,如果我阻止了你,:) 你也可以使用这个:List pageRolesOR = pr.stream().map(Page_Roles::toArray).collect(Collectors.toList ());我们可以稍后讨论这是我的电子邮件:j2eealidev@gmail.com
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多