У меня есть эта программа:
public static void main(String[] args){
System.out.println("Enter number of nodes");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<=n;i++)
{
nodes.add(i);
}
System.out.println(nodes);
System.out.println("How many subnetworks you want? Enter Small(10), Med(30), Large(50)");
small = sc.nextInt();
med = sc.nextInt();
large = sc.nextInt();
System.out.println("Small = " + small + "med" + med + "large" + large);
Теперь, в зависимости от значения малой, средней и большой и рассматривая кратность каждого из этих целых чисел, я хочу разбить ArrayList на разные массивы или массивы. Например, small = 100, med = 50, large = 10 должны разделить главный arraylist на 100 маленьких arraylists каждого из 10, 50 медиаарюристов каждый размером 30 и 10 больших arraylists каждый из размера 50. После раскола я хочу присваивать некоторые свойства элементам в подрешетках. И я не уверен, должен ли он быть arraylist или массив или что-то еще.
Вы можете использовать функцию списка расщепления.
private static List<List<Integer>> splitAndReturn(List<Integer> numbers,
int size) {
List<List<Integer>> smallList = new ArrayList<List<Integer>>();
int i = 0;
while (i + size < numbers.size()) {
smallList.add(numbers.subList(i, i + size));
i = i + size;
}
smallList.add(numbers.subList(i, numbers.size()));
return smallList;
}
Функция вернет массивList массивов с каждым размером size
. Поэтому, если вам нужно 100 массивов с размером 10, тогда
splitAndReturn(yourList, 10).subList(0, 100);
вы получите список массивов.
Ну, простую вещь, которую нужно сделать, - это прокрутить список и разделить их соответственно. Учитывая ваш пример,
small = 100, med = 50, large = 10
сначала проверьте, имеет ли список достаточное значение
if (list.size() >= ((small*10)+(med*30)+(large*50))){
for (int i=0;i<small;i++){
for(int j=0;j<10;j++){
//copy array value
}
}
// do the same for med and large.
}
small
вне внутреннего цикла (скажем, smallList
) и назначить smallList.add(list.get(j))