是否可以在Java中的不同行上打印映射的键和关联值?

时间:2012-11-01 00:05:23

标签: java maps

我想知道是否可以在不同的行上打印地图的键和相关值。我是Java和地图的新手。当我尝试使用普通println命令进行打印时,如同在最后一行一样,它打印出大括号内的键和值,并且全部在1行上。我知道这可能是一个愚蠢的问题,但我现在已经苦苦挣扎了一段时间,并没有在网上找到解决方案或在我的任何讲义中找到解决方案。这只是我设置的一个类,在我尝试以更大的规模实现它之前尝试使它工作。如果我的代码或其他任何内容没有以传统方式显示,请提前抱歉,这是我第一次发帖。

import java.util.TreeMap;
public class tester {   
public static void main(String[] args){
    TreeMap<String, String> dir = new TreeMap<String, String>();
    String key = "b";
    String value = "2";
    String key1 = "a";
    String value2 = "1";
    dir.put(key, value);
    dir.put(key1, value2);
    System.out.println(dir);
}
}

4 个答案:

答案 0 :(得分:2)

是的,你必须遍历地图并在不同的行上打印键和值。

TreeMap<String, String> dir = new TreeMap<String, String>();

for(Entry<String, String> en: dir.entrySet()) {

    System.out.println(en.getKey());
    System.out.println(en.getValue());
}

答案 1 :(得分:1)

...是

for (String key : dir.keySet()) {
    System.out.println(key + " = " + dir.get(key));
}

查看Map API以获取更多信息

从Mik378反馈更新

根据Mik378的建议,为了获得更好的性能,您最好使用Map.entrySetAccessing the Map values using keySet iterator

for(Map.Entry<String, String> entry : dir.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

答案 2 :(得分:1)

将最后一行替换为:

for(Map.Entry<String, String> entry : dir.entrySet()) {
   System.out.println(entry);
}

将输出:

a=1
b=2

确实,Entry的{​​{1}}方法已经是:

toString()

答案 3 :(得分:0)

使用lambda表达式很简单:

Fatal Exception: java.util.ConcurrentModificationException
   at java.util.ArrayList$SubList.size(ArrayList.java:1057)
   at java.util.AbstractCollection.toArray(AbstractCollection.java:136)
   at java.util.ArrayList.addAll(ArrayList.java:588)
   at java.util.Collections$SynchronizedCollection.addAll(Collections.java:2089)
   at com.sample.app.ui.Fragment$setObservers$6.onChanged(Fragment.java:382)
   at com.sample.app.ui.Fragment$setObservers$6.onChanged(Fragment.java:89)
   at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
   at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
   at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
   at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
   at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
   at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)
   at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)
   at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
   at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
   at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(FragmentViewLifecycleOwner.java:51)
   at androidx.fragment.app.Fragment.performStart(Fragment.java:2737)
   at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
   at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
   at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:442)
   at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
   at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
   at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
   at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
   at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
   at androidx.fragment.app.Fragment.performStart(Fragment.java:2739)
   at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
   at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
   at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
   at androidx.fragment.app.Fragment.performStart(Fragment.java:2739)
   at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
   at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
   at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
   at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:258)
   at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:550)
   at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1419)
   at android.app.Activity.performStart(Activity.java:7479)
   at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3454)
   at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
   at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
   at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
   at android.os.Handler.dispatchMessage(Handler.java:112)
   at android.os.Looper.loop(Looper.java:216)
   at android.app.ActivityThread.main(ActivityThread.java:7625)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)