我如何获得 arraylist 中的 hashmap 的克隆

我需要更改包含哈希映射的数组列表中所选索引的键和值。我知道要更换钥匙,您需要先取下要更换的钥匙,然后放一把新钥匙。但这并没有保存删除的键和值的位置。因此,我想遍历我的哈希映射数组列表,并在一个新的哈希映射中一个一个地创建它们,我可以在其中为我选择的索引添加一个 if 命令,假设 1,1 在那里它将改变我的索引位置想要更改并复制那些不被编辑的。我不知道如何以及如何复制的正确方法。请注意,我只是 Java 的初学者,正在努力学习。正确执行此操作的方法是什么?


我只是尝试手动更新键和值,但它改变了它应该在的位置/索引。


import java.util.*;


public class sof {

    static ArrayList<LinkedHashMap<String, String>> table = new ArrayList<LinkedHashMap<String, String>>(); //2d ArrayList

    public static void main(String args[]) {

        setMatrix();

        print();

        System.out.println();

        editValue2();


    }


    static void print(){

        for(int x = 0; x < table.size();x++){

            System.out.println(table.get(x));

        }

    }


    static String setChar(){

        String result = "";

        Random random = new Random();

        for(int x = 1; x < 4 ; x++){

        result += (char)(32 + random.nextInt(95));

        }

        return result;

    }


    static void setRow(int x){

        LinkedHashMap<String, String> arr = new LinkedHashMap<>();

        for(int z=1; z <= x; z++){

            String ran = setChar();

            String rann = setChar();

            arr.put(ran,rann);

        }

        table.add(arr);         

    }


    static void Setmatrix(){

        Scanner row = new Scanner(System.in);

        System.out.println("Enter Row: ");

        int zz = row.nextInt();

        Scanner column = new Scanner(System.in);

        System.out.println("Enter Column: ");

        int z = column.nextInt();

        for(int x = 0; x <= zz-1; x++){

            setRow(z);

        }

    }

我希望我可以编辑任何给定表中任何索引的键和值。键也必须是唯一的。


红颜莎娜
浏览 85回答 1
1回答

慕盖茨4494581

您可以获取和设置给定索引的 ArrayList 值,并替换保留 LinkedHashMap 中地图索引的键值,您必须使用新值克隆它。在这种情况下,您走在正确的轨道上。editValue2 方法的编辑代码int col = 0;LinkedHashMap<String, String> copy = new LinkedHashMap<>();// you can get the map from arrayList indexLinkedHashMap<String, String> map = table.get( ind1 ); // assuming ind1 is the arrayList indexfor ( Map.Entry<String, String> entry : map.entrySet() ){&nbsp; &nbsp; // assuming ind2 is the map index&nbsp; &nbsp; if ( ind2 == col )&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; copy.put( key, value );&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; copy.put( entry.getKey(), entry.getValue() );&nbsp; &nbsp; }&nbsp; &nbsp; col++;}table.set( ind1, copy );&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java