如何在c#中转换Java迭代器

本文关键字:转换 Java 迭代器 | 更新日期: 2023-09-27 18:10:17

我在java中下载了1个项目,我需要将java代码的某些部分转换为我的c#代码。

这是我的java代码:

public Map<String, String> queryOptions = new HashMap<String, String>();
Iterator<Map.Entry<String, String>> i = queryOptions.entrySet().iterator();
while (i.hasNext()) {
  Map.Entry<String, String> entry = i.next();
  if (isArray(entry.getValue())) {
    value
      .append(entry.getKey())
      .append(":")
      .append(entry.getValue());
  } 
  else {
    value
     .append(entry.getKey())
     .append(":")
     .append("'")
     .append(entry.getValue())
     .append("'");
  }
  if (i.hasNext()) {
    value.append(",");
  }
}

现在我需要将此代码转换为java代码。我知道IEnumerable for Iterator是使用的,但我不知道如何在上面的代码中使用java isArray函数也是如此。c#中也有相同的函数吗?

Dictionary<string,string> queryOptions = new Dictionary<string,string>();

如何转换其余的??

如何在c#中转换Java迭代器

像这样:

  public Dictionary<String, String> queryOptions = new Dictionary<String, String>();
  ...
  Boolean isFirst = true;
  // providing that "value" is StringBuilder
  foreach(var pair in queryOptions) {
    if (isFirst) 
      isFirst = false;
    else
      value.Append(',');
    //TODO: what is "isArray" in the context of String?
    if (isArray(pair.Value)) { 
      //TODO: implementing format output will be better
      value.Append(pair.Key);
      value.Append(':');
      value.Append(pair.Value);
    }
    else {
      //TODO: implementing format output will be better
      value.Append(pair.Key);
      value.Append(':');
      value.Append('''');
      value.Append(pair.Value);
      value.Append('''');
    }
  }

正如你所看到的,你,实际上,在上下文中不需要Enumerator(相当于Iterartor的c#)。

更好的方法是使用Linq,像这样:
// "report" is a final string that is exected 
// after value.ToString(); execution
String report = String.Combine(",", queryOptions
  .Select(pair => String.Format("{0}:{1}", 
     pair.Key, 
     isArray(pair.Value) ? pair.Value : "'" + pair.Value + "'"))
  );

但是你提供给的细节太少了我没法确定写下来