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);