Java 将列中的元素从 String 数组复制到新的 int 数组

Java copy elements in column from String array to new int array

在一些我似乎无法正确解决的问题上得到了一些帮助。

我有以下代码显示 csv 文件中的值。这是有效的。

while(file.hasNext()){
    String data = file.nextLine();
    String[] values = data.split(",");
    for(String index : values){
        System.out.printf("%s \t", index);
    } 
    System.out.println();
}

代码显示:

1    John Smith    Engineering
2    Jim Jones     Cooking

我想从 values[0](即 ID - 1,2)中获取值并将它们复制到一个新的 int 数组中,这样我就可以传递这个到其他方法来执行搜索等等。任何帮助将不胜感激。

谢谢!

只需将值[0] 保存到单独的列表中并将其转换为数组。如果你知道 id 的数量,你可以直接将你的 id 保存到一个数组中。

List<String> ids = new ArrayList<>();
while (file.hasNext()) {
    String data = file.nextLine();
    String[] values = data.split(",");
    if (values.length >= 1) {
        ids.add(values[0]);
        
        for (String index : values) {
            System.out.printf("%s \t", index);
        }
    }
    System.out.println();
}

String[] idsArray = new Integer[ids.size()];
ids = ids.toArray(idsArray);
// use idsArray

不太确定我完全理解你的问题,但你可以试试这个:

String[] str_array = {...};
int[] int_array = {...};

int_array[index] = Integer.parseInt(str_array[index]);

通过这种方式,您可以将字符串添加到 int 数组,注意 NumberFormatExceptions。

编辑:

ArrayList<Integer> ids = new ArrayList<>(); // IDs: 1, 43, 23...
Scanner scanner = new Scanner(System.in); // Reading from console
int input = scanner.nextInt();

if (ids.contains(input)) {
  // true
} else {
  // false
}

你可以试试这个:)

Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
    while(file.hasNext()){
        String data = file.nextLine();
        String[] values = data.split(",");
        for(int key=0;key<values.size();key++){
            if (!map.containsKey(key)){
                map.put(key, new ArrayList<String>());
            }
            map.get(key).add(values[key]);
        } 
    }
    Integer[] items = new Integer[map.get(0).size()];
    for (i = 0; i < map.get(0).size() ; i++) {
       items[i]=Integer.valueOf(map.get(0).get(i));
    }