Scala技术问题:如何按Key排序并打印Properties属性?
解决方案:按键排序打印Properties键值对
没问题,要实现按键排序后打印java.util.Properties的键值对,咱们只需要把无序的Properties集合转换成有序结构,再遍历输出就行。这里给你两种实用的实现方式:
方案1:转换为Scala集合后排序遍历
先把Properties的键值对集合转换成Scala可操作的集合,排序后直接遍历打印:
import java.util.Properties import scala.jdk.CollectionConverters._ // Scala 2.13+ 推荐用这个;Scala 2.12及以下用 scala.collection.JavaConverters._ val props = new Properties() // 先加载你的属性,比如 props.load(new FileInputStream("config.properties")) props.entrySet().asScala .toSeq .sortBy(entry => entry.getKey.toString) // 按键的字符串形式排序 .foreach(entry => println(s"|${entry.getKey}| : ${entry.getValue}"))
说明:
entrySet().asScala:把Java的EntrySet转换成Scala的可遍历集合,方便后续操作sortBy(_.getKey.toString):因为Properties的key本质都是字符串(虽然API定义是Object),所以转成字符串后排序,保证顺序正确- 最后用
foreach按排序后的顺序打印键值对
方案2:先排序key集合,再逐个取值打印
如果你更倾向于先处理key,再根据key获取对应的值,也可以用这种方式:
import java.util.Properties import scala.jdk.CollectionConverters._ val props = new Properties() // 加载属性... props.keySet().asScala .toSeq .sortBy(_.toString) .foreach(key => println(s"|$key| : ${props.get(key)}"))
这种方式先把所有key提取出来排序,再循环每个key去Properties里取值打印,效果和方案1完全一致,看你个人习惯选择就行。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

