相关疑难解决方法(0)

使用流处理异常

我有一个,Map<String,List<String>>并希望将其变成,Map<String,List<Long>>因为String列表中的每个代表一个Long

Map<String,List<String>> input = ...;
Map<String,List<Long>> output= 
input.entrySet()
       .stream()
       .collect(toMap(Entry::getKey, e -> e.getValue().stream()
                                                      .map(Long::valueOf)
                                                      .collect(toList()))
               );
Run Code Online (Sandbox Code Playgroud)

我主要的问题是每个人String可能不能正确代表一个Long; 可能有一些问题。Long::valueOf可能会引发例外。如果是这种情况,我想返回一个null或空Map<String,List<Long>>

因为我想遍历这张output地图。但是我不能接受任何错误转换。甚至没有一个。关于如何在不正确的String-> Long转换的情况下如何返回空输出的任何想法?

java java-8 java-stream

10
推荐指数
2
解决办法
187
查看次数

如何将字符串转换为float并避免在java中使用try/catch?

有一些情况我需要将字符串转换为浮点数或其他一些数值数据类型,但有可能获得一些不可转换的值,如" - "或"/",我无法预先验证所有值以删除他们.我想避免使用try/catch这个问题,还有其他方法在java中进行正确的转换吗?类似于C#的东西TryParse

java floating-point try-catch

9
推荐指数
2
解决办法
8425
查看次数

从字符串到数字类型的快速安全转换

这将是一个快速的一个安全的字符串转换为数值型的方式,而当转换失败提供一个默认值?

我尝试使用通常推荐的方法,即使用Exceptions:

implicit class StringConversion(val s: String) {

  private def toTypeOrElse[T](convert: String=>T, defaultVal: T) = try {
    convert(s)
  } catch {
    case _: NumberFormatException => defaultVal
  }

  def toShortOrElse(defaultVal: Short = 0) = toTypeOrElse[Short](_.toShort, defaultVal)
  def toByteOrElse(defaultVal: Byte = 0) = toTypeOrElse[Byte](_.toByte, defaultVal)
  def toIntOrElse(defaultVal: Int = 0) = toTypeOrElse[Int](_.toInt, defaultVal)
  def toDoubleOrElse(defaultVal: Double = 0D) = toTypeOrElse[Double](_.toDouble, defaultVal)
  def toLongOrElse(defaultVal: Long = 0L) = toTypeOrElse[Long](_.toLong, defaultVal)
  def toFloatOrElse(defaultVal: Float = 0F) = toTypeOrElse[Float](_.toFloat, defaultVal)
} …
Run Code Online (Sandbox Code Playgroud)

scala

6
推荐指数
1
解决办法
1215
查看次数

具有parseInt,parseLong,parseDouble等的Java库接受默认值而不抛出异常?

我喜欢java中的String to Int中的建议- 可能是错误的数据,需要避免异常来实现解析int的实用程序方法,但如果无法解析字符串则返回默认值.

public static int parseInt(String s, int defaultValue) {
    if (s == null) return defaultValue;
    try {
         return Integer.parseInt(s);
     } catch (NumberFormatException x) {
         return defaultValue;
     }  
}
Run Code Online (Sandbox Code Playgroud)

是否存在一个现有的开源库(例如来自apache commons,或google),它实现了这个以及其他数据类型,如boolean,float,double,long等?

java parsing

3
推荐指数
2
解决办法
3649
查看次数

标签 统计

java ×3

floating-point ×1

java-8 ×1

java-stream ×1

parsing ×1

scala ×1

try-catch ×1