Проблема в том, что один из них печатает для длинных штрих-кодов
blockquote>Вы имеете в виду, что длина штрих-кода слишком велика и она обрезается / обрезается, и поэтому она не сканируемое?
Какое программное обеспечение генерирует ZPL? И какие значения устанавливаются с помощью
^BY
, который контролирует ширину штрихкодов модуля? Поскольку метка 300 dpi читаема, звучит так, как будто вам нужно уменьшить ширину модуля, установленную на^BY
для метки 200 dpi.
Вы можете использовать subList (int fromIndex, int toIndex)
для просмотра части исходного списка.
Из API:
Возвращает представление части этого списка между указанным
fromIndex
включительно иtoIndex
, исключая. (ЕслиfromIndex
иtoIndex
равны, возвращаемый список пуст.) Возвращенный список поддерживается этим списком, поэтому неструктурные изменения в возвращаемом списке отражаются в этом списке , наоборот. Возвращенный список поддерживает все дополнительные операции со списком, поддерживаемые этим списком.
Пример:
List<Integer> numbers = new ArrayList<Integer>(
Arrays.asList(5,3,1,2,9,5,0,7)
);
List<Integer> head = numbers.subList(0, 4);
List<Integer> tail = numbers.subList(4, 8);
System.out.println(head); // prints "[5, 3, 1, 2]"
System.out.println(tail); // prints "[9, 5, 0, 7]"
Collections.sort(head);
System.out.println(numbers); // prints "[1, 2, 3, 5, 9, 5, 0, 7]"
tail.add(-1);
System.out.println(numbers); // prints "[1, 2, 3, 5, 9, 5, 0, 7, -1]"
Если вам нужно, чтобы эти разделенные списки НЕ были представлением, просто создайте новый Список
из подсписка
. Вот пример объединения нескольких из этих вещей:
// chops a list into non-view sublists of length L
static <T> List<List<T>> chopped(List<T> list, final int L) {
List<List<T>> parts = new ArrayList<List<T>>();
final int N = list.size();
for (int i = 0; i < N; i += L) {
parts.add(new ArrayList<T>(
list.subList(i, Math.min(N, i + L)))
);
}
return parts;
}
List<Integer> numbers = Collections.unmodifiableList(
Arrays.asList(5,3,1,2,9,5,0,7)
);
List<List<Integer>> parts = chopped(numbers, 3);
System.out.println(parts); // prints "[[5, 3, 1], [2, 9, 5], [0, 7]]"
parts.get(0).add(-1);
System.out.println(parts); // prints "[[5, 3, 1, -1], [2, 9, 5], [0, 7]]"
System.out.println(numbers); // prints "[5, 3, 1, 2, 9, 5, 0, 7]" (unmodified!)
Можно использовать chunk
метод от Наборы Eclipse :
ArrayList<Integer> list = new ArrayList<>(Interval.oneTo(1000));
RichIterable<RichIterable<Integer>> chunks = Iterate.chunk(list, 10);
Verify.assertSize(100, chunks);
Несколько примеров chunk
метод были включены в этот статья DZone также.
Примечание: Я - разработчик для Наборов Eclipse.
Я предполагаю, что проблема, с которой вы столкнулись, связана с присвоением имени 100 спискам массивов и их заполнением. Вы можете создать массив ArrayLists и заполнить каждый из них с помощью цикла.
Самый простой (читай глупейший) способ сделать это:
ArrayList results = new ArrayList(1000);
// populate results here
for (int i = 0; i < 1000; i++) {
results.add(i);
}
ArrayList[] resultGroups = new ArrayList[100];
// initialize all your small ArrayList groups
for (int i = 0; i < 100; i++) {
resultGroups[i] = new ArrayList();
}
// put your results into those arrays
for (int i = 0; i < 1000; i++) {
resultGroups[i/10].add(results.get(i));
}
Вы можете добавить библиотеку Guava в свой проект и использовать метод Lists.partition , например
List<Integer> bigList = ...
List<List<Integer>> smallerLists = Lists.partition(bigList, 10);
Здесь обсуждался аналогичный вопрос, Java: разделить список на два подсписка?
В основном вы можете использовать подсписок. Подробнее здесь: subList
Возвращает представление части этого списка между fromIndex, включая, и toIndex, исключая. (Если fromIndex и toIndex равны, возвращаемый список пуст.) Возвращаемый список поддерживается этим списком, поэтому изменения в возвращаемом списке отражаются в этом списке, и наоборот. Возвращенный список поддерживает все дополнительные операции со списком, поддерживаемые этим списком ...