List和Dictionary互转

// 声明Dictionary并初始化
            Dictionary<string, string> dic = new Dictionary<string, string>() { 
                {"1", "one"},
                {"2", "two"},
                {"3", "three"}
            };
            // 获得KeyList
            List<string> keyList = dic.Keys.ToList();

            // 获得ValueList
            List<string> valueList = dic.Values.ToList();
            
            // 获得KeyValuePairList
            List<KeyValuePair<string, string>> kvList = dic.ToList();
            
            // KeyValuePairList -> Dictionary
            Dictionary<string, string> dic2 = kvList.ToDictionary(item => item.Key, item => item.Value);

            // 在KeyValuePairList中添加一个重复Key,转换为Dictionary时异常
            kvList.Add(new KeyValuePair<string, string>("1", "1"));
            Dictionary<string, string> dic3 = kvList.ToDictionary(item => item.Key, item => item.Value);    // 发生异常
View Code

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Java中,可以使用递归算法实现将List换为Tree,以及将Tree换为List。 将List换为Tree的步骤如下: 1. 创建一个根节点。 2. 遍历List中的每个元素。 3. 如果元素是叶子节点,则将它添加到根节点下。 4. 如果元素是非叶子节点,则在根节点下创建一个子节点,并将元素添加到子节点下。 5. 对于每个非叶子节点,递归执行步骤2-4,直到所有元素都被处理完。 以下是将List换为Tree的示例代码: ``` public class TreeNode { int val; List<TreeNode> children; public TreeNode(int val) { this.val = val; this.children = new ArrayList<>(); } } public TreeNode listToTree(List<Integer> list) { TreeNode root = new TreeNode(0); for (Integer val : list) { addToTree(root, val); } return root.children.get(0); } public void addToTree(TreeNode node, int val) { if (node.children.isEmpty()) { node.children.add(new TreeNode(val)); } else { TreeNode lastChild = node.children.get(node.children.size() - 1); if (lastChild.val < val) { lastChild.children.add(new TreeNode(val)); } else { addToTree(lastChild, val); } } } ``` 将Tree换为List的步骤如下: 1. 创建一个List。 2. 将根节点添加到List中。 3. 遍历根节点的子节点,将它们添加到List中。 4. 对于每个子节点,递归执行步骤3,直到所有子节点都被处理完。 以下是将Tree换为List的示例代码: ``` public List<Integer> treeToList(TreeNode root) { List<Integer> list = new ArrayList<>(); if (root == null) { return list; } list.add(root.val); for (TreeNode child : root.children) { list.addAll(treeToList(child)); } return list; } ``` 其中,TreeNode是一个表示节点的类,包含一个值和一个子节点列表。上述代码中假设根节点的值为0,如果根节点不是叶子节点,则只有一个子节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值