取一个数字(1 到 10 的长度)将其转换为索引,并且该索引的基数从 Java 中的数组中检索特定的字符串

Take a number (1 to 10 length) transform it to indexes and base of this indexes retrieve the specific Strings from an array in Java

我想从 rotatedZeros 中取出每个数组中的数字,一个一个地转换为索引,如从 [=18 中检索 String/s =]courses 并将这些数组放入 finalExcelFormula 中。或者谁能​​解释一下这是如何用 Map 完成的。

rotatedZeros 包含所有数字组成的所有可能的唯一数字。

例如:rotatedZeros.get(3) = [1,3,4];我想从 courses ArrayList 索引 1、3 和 4 处的字符串 return 并将此数组放入 finalExcelFormula 数组中。 观察。数字总是递增的!

List<Integer[]> rotatedZeros;
List<String[]> finalExcelFormula = new ArrayList<>(1023); 
static List<String> courses = new ArrayList<>();

        courses.add("\"Vue\"");
        courses.add("\"Mathematics\"");
        courses.add("\"Geography\"");
        courses.add("\"Physics\"");
        courses.add("\"Sport\"");
        courses.add("\"Literature\"");
        courses.add("\"Design\"");
        courses.add("\"C++\"");
        courses.add("\"Java\"");
        courses.add("\"C#\"");

private void finalExcelFormula() {
        for(int i = 0; i < rotatedZeros.size(); i++) {
            for(int e = 0; e < rotatedZeros.get(i).length; e++){
                Arrays.stream(finalExcelFormula.get(i)).toArray(courses.get(rotatedZeros.get(i)[e]));
            
            }
        }
    }

虽然我看了你的问题 4 遍,但我不知道你想做什么...

所以这是一个基本的 hasmap 实现 ...

public static void main(String[] args) {

    ArrayList<Integer[]> rotatedZeros = new ArrayList();

    rotatedZeros.add(new Integer[]{1, 3, 4});
    rotatedZeros.add(new Integer[]{1, 2, 5});
    rotatedZeros.add(new Integer[]{1, 2, 3});
    rotatedZeros.add(new Integer[]{0, 1, 2});

    HashMap<Integer, String> things = new HashMap<>();
    things.put(1, "vous");
    things.put(2, "le");
    things.put(3, "vous");
    things.put(4, "couche");
    things.put(5, "avec");
    things.put(6, "moi");

    for (Integer[] rotatedZeroArray : rotatedZeros) {
        StringBuilder sb = new StringBuilder();
        for (Integer integer : rotatedZeroArray) {
            sb.append(things.get(integer)).append(" ");
        }
        System.out.println("output:" + sb.toString().trim());
    }

    // or weirder...
    ArrayList<String> courses = new ArrayList<>();
    courses.add("\"Vue\"");
    courses.add("\"Mathematics\"");
    courses.add("\"Geography\"");
    courses.add("\"Physics\"");
    courses.add("\"Sport\"");
    courses.add("\"Literature\"");
    courses.add("\"Design\"");
    courses.add("\"C++\"");
    courses.add("\"Java\"");
    courses.add("\"C#\"");

    HashMap<Integer, String> things2 = new HashMap();

    int counter = 0;
    for (String course : courses) {
        things2.put(counter++, course);
    }

    for (Integer[] rotatedZeroArray : rotatedZeros) {
        StringBuilder sb = new StringBuilder();
        for (Integer integer : rotatedZeroArray) {
            sb.append(things2.get(integer)).append(" ");
        }
        System.out.println("output:" + sb.toString().trim());
    }
    
}

要构造 finalExcelFormula,您需要流过 Integer[] 并在查找 courses 时为它们创建相应的 String[] :

List<String[]> finalExcelFormula = rotatedZeros.stream()
        .map(rotatedZeroArray -> Arrays.stream(rotatedZeroArray)
                .map(courses::get)
                .toArray(String[]::new))
        .collect(Collectors.toList());