Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换列表<;浮动>;列出<;长期>;_Java_List_Arraylist - Fatal编程技术网

Java 转换列表<;浮动>;列出<;长期>;

Java 转换列表<;浮动>;列出<;长期>;,java,list,arraylist,Java,List,Arraylist,我正在开发一个Java应用程序,我有两个不同的强类型数组。我需要一个,一个列表变成列表。唉,我不能使用原语类型,我只能使用Float和Integer而不是Float和Integer 从一个转换到另一个的最佳方式是什么 编辑 我在一些与工作相关的项目中只使用了一周左右的java,因此我还没有找到很多与java相关的语言。当你试着投下类似的东西时: Long projectId = Long.parseLong(myFloat.toString()); 我得到了java.lang.NumberF

我正在开发一个Java应用程序,我有两个不同的强类型数组。我需要一个,一个
列表
变成
列表
。唉,我不能使用原语类型,我只能使用
Float
Integer
而不是Float和Integer

从一个转换到另一个的最佳方式是什么

编辑 我在一些与工作相关的项目中只使用了一周左右的java,因此我还没有找到很多与java相关的语言。当你试着投下类似的东西时:

Long projectId = Long.parseLong(myFloat.toString()); 

我得到了java.lang.NumberFormatExceptions,这些都让我很恼火。尤其是当谷歌试图长时间搜索时,几乎没有什么帮助。

我认为没有任何“最佳方式”。如果需要精确性,请考虑使用String和BigDecimal,然后将BigDigBy转换为int、双、浮点或其他任何合适的数字类型。

取决于您认为“最佳”的方式:运行得更快吗?短码?创建的对象更少

使用for循环并进行转换可能运行得最快。如果你使用的是<代码> ARAYLISTAB/COD>,请考虑预先分配所需的大小。这样可以节省调整数组大小的时间

如果您正在寻找较短的代码,如果您正在使用Java8,我相信您可以使用类似(未经测试)的东西

List result=doubleList.stream().map(d->(Long)(double)d.collect(Collector.toList());
我相信在Guava的帮助下,在pre-Java8中也可以做类似的事情,当然代码会更长一些

如果您希望创建最少的对象,并且如果您知道只访问列表中的几个对象,则可以考虑编写一个包装器,该包具有“代码>列表的接口,并且对于大多数方法调用,委托给内部<代码>列表<代码> .< /P> < P>我认为(这是一种意见)最好的办法是最简单的办法

这是基于以下假设的有偏见的观点:

  • 您尚未对代码进行概要分析,因此如果这段代码是性能瓶颈,则可能是未知的。这意味着优化它是过早的优化
  • 如果你用最简单的方法,那么你可能会因为“聪明”而招致最少的bug
  • 下面是一个例子

     List<Float> floats = ...;
     List<Integer> integers = new ArrayList<Integer>();
     for (Float item : floats) {
        integers.add(item.intValue());
     } 
     return integers;
    
    列表浮动=。。。;
    列表整数=新的ArrayList();
    对于(浮动项目:浮动){
    整数.add(item.intValue());
    } 
    返回整数;
    
    正如许多人所指出的,由于您没有指定什么是重要的,因此很难知道哪种解决方案最能满足您的潜在需求。

    使用Java 8:

    List<Float> list = Arrays.asList(1.0f, 2.0f, 3.0f);
    List<Integer> intList = list.stream().map(Float::intValue).collect(Collectors.toList());
    
    List List=Arrays.asList(1.0f、2.0f、3.0f);
    List intList=List.stream().map(Float::intValue).collect(collector.toList());
    
    您认为最好的方法是什么?因此您需要在两个列表之间切换,其中一个列表包含不同的数据类型?在两者之间转换数据将是理想的。(顺便问一下,在这种情况下,包装器类与基本类一样好,因为泛型不接受基本类型。)您是在尝试截断、舍入还是进行某种位保留?不,数字实际上是完整的,但我需要将它们转换为长的。。。(说来话长——双关语)。我只是想知道是否有一种方法可以避免大量的施法。你是在使用数组还是列表?你说的根本不一致,这不是答案。这甚至不是一个易懂的评论。@sleepyfung我试图在不改变你答案含义的情况下纠正你的英语。如果你认为我已经改变了它的意思,请随意撤销我的编辑。@DavidWallace谢谢david,我知道我的穷人English@Kon这不是答案。这只是一个建议谢谢,这正是我需要的。我不知道可用的.intValue()方法。这一切都不同了。
    List<Float> list = Arrays.asList(1.0f, 2.0f, 3.0f);
    List<Integer> intList = list.stream().map(Float::intValue).collect(Collectors.toList());