如何将 arraylist <String> 转换为 arraylist <integer>

How can I convert arraylist <String> to arraylist <integer>

我的目标是从 ArrayList 和 将它们添加到新的 ArrayList, 因此,如果房子是 [0],那么我想 return 带有整数的新 ArrayList。

public class List {
public static void main(String[] List) {
    List<String> words = new ArrayList<>();
    words.addAll(Arrays.asList("house", "bike","dog","house","house"));
    System.out.println(getIntegerArray(words,house));


 public static List<Integer> getIntegerArray(List<String> words, String word) {
        List<Integer> numbers = new ArrayList<>();
        for (int i = 0; i < numbers.size() ; i++) {

        }

一开始我有这样的ArrayList 输入:

["house", "bike","dog"]

我想像这样获得新的 ArrayList 输出:

[0,1,2]

您可以通过检查传递给方法的字符串是否包含在列表中并将数字添加到列表中来完成numbers

这里是方法的一个例子getIntegerArray:

public static List<Integer> getIntegerArray(List<String> words, String word) {
    List<Integer> numbers = new ArrayList<>();

    for (int i=0; i < words.size() ; i++) {
        if (word.equals(words.get(i)))
            numbers.add(i);
    }
    return numbers;
}

PS:在 System.out.println(getIntegerArray(words, house)); 中,您正在传递一个未声明的变量 house。可能您想写 "house".

您不必担心 numbers 列表的大小,只需根据需要添加适当的索引即可:

public static List<Integer> getIntegerArray(List<String> words, String word) {
    List<Integer> numbers = new ArrayList<>();
    for (int i = 0, n = words.size(); i < n; i++) {
        if (Objects.equals(word, words.get(i)))
            numbers.add(i);
    }
    return numbers;
}

或使用 Stream API 获取索引列表:

public static List<Integer> getIntegerArray(List<String> words, String word) {
    return IntStream.range(0, words.size())
        .filter(i -> Objects.equals(word, words.get(i)))
        .boxed()
        .collect(Collectors.toList());
}

getIntegerArray(List<String> words, String word) 和单个 word 不能得到一个包含多个元素的整数列表,我建议传递整个 String[],称为 findwords在下面的代码中。否则,列表有一个 indexOf(),这使事情变得非常简单:

public static void main (String[] args) {
    List<String> words = new ArrayList<>();
    words.addAll(Arrays.asList("house", "bike","dog","house","house"));
    System.out.println(getIntegerArray(words,args));
}

public static List<Integer> getIntegerArray(List<String> words, String[] findwords) {
    List<Integer> numbers = new ArrayList<>();
    for(String word: findwords)
        numbers.add(words.indexOf(word));
    return numbers;
}

当 运行 使用命令行参数 house bike dog 时,这将产生 [0, 1, 2] 作为输出。参见 https://ideone.com/gYefsa(ideone 不支持传递命令行参数,因此 args 只是在代码内部初始化)。