我想将数组列表拆分为较小的单独列表,每个列表中包含6个元素。例如,用户将输入以下信息:
HKY SGP 18:00 2 9:00 400
CHN HKY 17:00 3 6:00 500
RRK SSK 19:00 1 7:00 300
这些信息将存储在arraylist中。然后我想分开这个arraylist,以便信息将是这样的:
清单1:HKY SGP 18:00 2 9:00 400
清单2:CHN HKY 17:00 3 6:00 500
列表3:RRK SSK 19:00 1 7:00 300
这是为了将此列表与另一个arraylist进行比较并提取某些信息。
感谢任何帮助,如果问题不明确,请告知我。
谢谢!
答案 0 :(得分:1)
您可以使用n
遍历subList()
元素组中的数组列表,然后将它们添加到列表列表中:
List<List<String>> output = new ArrayList<List<String>>();
for (int i=0; i < arrayList.size(); i+=6) {
List<String> group = arrayList.subList(i, i+6);
output.add(new ArrayList<String>(group));
}
最后,output
将包含六元素列表的列表。这回答了这个问题,但实际上,为什么要将所有数据作为列表处理?将每组六个值封装为一个类中的属性似乎是个好主意。
答案 1 :(得分:0)
我认为你想要一个二维数组和使用String#split()的组合。以下示例应该让您非常接近您正在寻找的内容。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SplitString
{
private static List<String> listOfFullStrings = new ArrayList<String>();
static
{
listOfFullStrings.add("HKY SGP 18:00 2 9:00 400");
listOfFullStrings.add("CHN HKY 17:00 3 6:00 500");
listOfFullStrings.add("RRK SSK 19:00 1 7:00 300");
}
public static void main(String[] args)
{
String[][] parsedArrays = new String[listOfFullStrings.size()][6];
for (int i = 0; i < listOfFullStrings.size(); i++)
{
parsedArrays[i] = listOfFullStrings.get(i).split(" ");
}
for (int i = 0; i < parsedArrays.length; i++)
{
System.out.println("List " + i + " :" + Arrays.asList(parsedArrays[i]));
}
}
}
输出如下:
List 0 :[HKY, SGP, 18:00, 2, 9:00, 400]
List 1 :[CHN, HKY, 17:00, 3, 6:00, 500]
List 2 :[RRK, SSK, 19:00, 1, 7:00, 300]
注意:我转换为列表只是为了在打印时获得更好的格式。