Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 组合ArrayList和数组以形成某种模式的结果数组_Java_Arrays_Arraylist - Fatal编程技术网

Java 组合ArrayList和数组以形成某种模式的结果数组

Java 组合ArrayList和数组以形成某种模式的结果数组,java,arrays,arraylist,Java,Arrays,Arraylist,我有一个整数类型的数组列表和一个字符串类型的数组。我想形成一个结果数组,它是两者的组合。限制是不允许我使用任何贴图界面 示例: ArrayList<Integer> al=[1,2,3,4,5,6,7,8,9] String name[]={"Cat","bat","mat"} //my resultant array should look like this //String result[]=[cat[1,2,3],bat[4,5,6],mat[7,8,9]] ArrayL

我有一个整数类型的数组列表和一个字符串类型的数组。我想形成一个结果数组,它是两者的组合。限制是不允许我使用任何贴图界面

示例:

ArrayList<Integer> al=[1,2,3,4,5,6,7,8,9]
String name[]={"Cat","bat","mat"} 
//my resultant array should look like this
//String result[]=[cat[1,2,3],bat[4,5,6],mat[7,8,9]]
ArrayList al=[1,2,3,4,5,6,7,8,9]
字符串名称[]={“猫”、“蝙蝠”、“垫”}
//我的结果数组应该如下所示
//字符串结果[]=[cat[1,2,3],bat[4,5,6],mat[7,8,9]]
好心的,建议我实现这一目标的有效方法


提前感谢您。

由于结果是字符串类型,您可以使用从列表中获取范围,例如:

List<Integer> al = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
String[] names = {"Cat", "bat", "mat"};
String[] result = new String[names.length];
int j = 3;

for (int i = 0; i < names.length; i++) {
    result[i] = names[i] + al.subList(j - 3, j);
    j += 3;
}
System.out.println(Arrays.asList(result));

注意


在使用数组和列表之前,必须检查长度,否则可能会出现错误
ArrayIndexOutOfBoundsException
Exception

我将以以下方式处理此问题。 创建具有(字符串名称,int[]编号)作为其成员的en entry类。 然后根据逻辑填充该类的对象以生成

name: cat, int [] number= 1,2,3.
外部数组将是这些条目对象的集合

入门级是

class Entry{
String name;
int[] numbers;
Entry(String name, int[] numbers){
}
}

您可以将列表的大小除以数组的长度,获取阈值并使用它将结果存储到
映射中,例如:

List<Integer> al= Arrays.asList(1,2,3,4,5,6,7,8,9);
String name[]= new String[]{"Cat","bat","mat"};

int elementsPerNode = al.size() / name.length;

Map<String, List<Integer>> resultMap = new LinkedHashMap<>();
for(String element : name) {
    resultMap.put(element, new ArrayList<Integer>());
}

for(int i=0 ; i < al.size() ; i++) {
    resultMap.get(name[i / elementsPerNode]).add(al.get(i));
}

System.out.println(resultMap);
List al=Arrays.asList(1,2,3,4,5,6,7,8,9);
字符串名称[]=新字符串[]{“Cat”、“bat”、“mat”};
int elementsPerNode=al.size()/name.length;
Map resultMap=newlinkedhashmap();
for(字符串元素:名称){
结果映射put(元素,新ArrayList());
}
对于(int i=0;i
您确定结果应该是字符串数组,而不是更适合的数据结构吗?例如,
列表
似乎更有意义。你需要的是一张地图,我知道了。但是为了进一步的操作,我需要把它做成数组的形式
List<Integer> al= Arrays.asList(1,2,3,4,5,6,7,8,9);
String name[]= new String[]{"Cat","bat","mat"};

int elementsPerNode = al.size() / name.length;

Map<String, List<Integer>> resultMap = new LinkedHashMap<>();
for(String element : name) {
    resultMap.put(element, new ArrayList<Integer>());
}

for(int i=0 ; i < al.size() ; i++) {
    resultMap.get(name[i / elementsPerNode]).add(al.get(i));
}

System.out.println(resultMap);