如何从List <map <string,object =“”>&gt;中删除键/值对

时间:2015-04-24 04:26:42

标签: java dictionary

我有List<Map<String, Object>>,如下所示。

[{a=1, b=Kanji, c=null, d=Alphabet}]

我已经知道“c”键的值有时为null,所以如果是这种情况,我想从List<Map<String, Object>>删除“c”键。

所以我想要结果,如果“c”键的值为“null”或空

[{a=1, b=Kanji, d=Alphabet}]

所以我试过

List<Map<String, Object>> list = ....(procedure to get the  [{a=1, b=Kanji, c=null, d=Alphabet}] from sql)

for (Map<String, Object> child : list) {
    Object value = child.get("c");
      if(value == null || value == "") {
        list.remove("c");
      }
}

但是List仍然显示

[{a=1, b=Kanji, c=null, d=Alphabet}]

如何从列表中删除值“c”?

我希望得到List<Map<String, Object>>的结果。

4 个答案:

答案 0 :(得分:3)

您需要从子地图(child.remove("c"))而不是List中删除该元素。

答案 1 :(得分:0)

上面的代码尝试从列表中删除密钥,但它应该尝试从地图中删除密钥。

答案 2 :(得分:0)

更改需要..

  
      
  1. map移除,而不是从list移除。
  2.   
  3. key进行迭代,找到值为null的地图元素
  4.   

试试这个..

for(Map<String, Object> child : List){
    for(String key : child.keySet()){
                if(child.get(key)==null)
                    child.remove(key);
    }
}

答案 3 :(得分:0)

import UIKit

class ProblemPresentation: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var problemImage: UIImageView!
    var selectedImage: String?
    let sampleTextField =  UITextField(frame: CGRect(x: 100, y: 545, width: 230, height: 40))
    
    let solution = ["600", "1", "0.5"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
        if let notNil = problemImage {
        notNil.image = UIImage(named: selectedImage ?? "Ncorrect")
        notNil.layer.masksToBounds = true
        notNil.layer.borderWidth = 1.5
        notNil.layer.borderColor = UIColor.black.cgColor
        }