我有一个整数类型的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]]
请告诉我实现这一目标的有效方法。
提前谢谢你。
答案 0 :(得分:1)
因为结果是String类型,您可以使用List::subList
从列表中获取范围,例如:
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));
OUPUTS
[Cat[1, 2, 3], bat[4, 5, 6], mat[7, 8, 9]]
注意
在使用数组和列表之前必须检查长度,否则可能会出现错误ArrayIndexOutOfBoundsException
异常
答案 1 :(得分:0)
我会以下列方式解决这个问题。 创建具有(String name,int [] number)作为其成员的入口类。 然后根据逻辑填充此类的对象以生成
name: cat, int [] number= 1,2,3.
外部数组将是这些Entry对象的集合。
入门课程
class Entry{
String name;
int[] numbers;
Entry(String name, int[] numbers){
}
}
答案 2 :(得分:0)
您可以按列表的长度划分列表大小,获取阈值并使用它将结果存储到Map
中,例如:
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);