当前位置: 首页 > 面试题库 >

数组到集合:优化的代码

沃楷
2023-03-14
问题内容

有没有更好的方法来实现这一目标?

public static List<String> toList(String[] array) {

    List<String> list = new ArrayList(array.length);

    for(int i=0; i<array.length; i++)
        list.add(array[i]);

    return list;
}

注意: Arrays.asList(a)返回由指定数组支持的固定大小的列表。 (将返回的列表更改为“直写”到数组。)。我不要那种行为

我认为我上面的功能绕过了(或者我错了吗?)

因此,这里有另一种方法:

public static List<String> toList(String[] array) {

    List<String> list = new ArrayList(array.length);

    list.addAll(Arrays.asList(array));

    return list;
}

只看它, 我相信它比第一种方法更快


问题答案:

您用更好的方式表示什么:

更具可读性:

List<String> list = new ArrayList<String>(Arrays.asList(array));

更少的内存消耗,并且可能更快(但绝对不是线程安全的):

public static List<String> toList(String[] array) {
    if (array==null) {
       return new ArrayList(0);
    } else {
       int size = array.length;
       List<String> list = new ArrayList(size);
       for(int i = 0; i < size; i++) {
          list.add(array[i]);
       }
       return list;
    }
}

顺便说一句:这是您的第一个示例中的错误:

array.length如果array为null,将引发null指针异常,因此if (array!=null)必须首先执行检查。



 类似资料:
  • 问题内容: 我在用SQL开发匹配算法时遇到了麻烦。我有一张桌子。这些中的每一个都需要与表中的相同行数匹配(出于这个问题的原因,我们需要为每个主题选择两行或控件)。所选控件的位置必须完全匹配,并且所选控件的值应尽可能接近主题。 以下是一些示例数据: 表主题: 表控件: 这是来自样本数据的最佳结果: 这很棘手,因为例如控件11与主体1最接近。但是,在最佳解中,控件11与主体3匹配。 我相信匈牙利算法已

  • 返回两个数组中的任何一个元素。 用数组 a 和 b 的所有值创建一个 Set 对象,并转换成一个数组。 const union = (a, b) => Array.from(new Set([...a, ...b])); union([1, 2, 3], [4, 3, 2]); // [1,2,3,4]

  • 另外,第二个选项会比使用非键控集合更快吗?我读到收集迭代很慢,它们是为查找而设计的。这适用于非键控集合,还是仅适用于键值映射集合? 感谢任何能提供建议的人。

  • 假设给你一个数字,N,这是你的目标数字。然后给你一系列p个数,你必须找到这些数中大于N的最小和,也就是说,它最小地超过了N(或者等于N)。 你可以取任意元素组合的任意和。p可以大到100。 我目前的算法:在扫描所有信息后,我创建了一个100位长的位集,并通过使用循环将从0到(2^p)-1的所有整数转换为它,有效地结束了000…000和111…111之间的所有二进制数。 如您所知,这些向量可以被解释

  • 本文向大家介绍Java数组集合的深度复制代码实例,包括了Java数组集合的深度复制代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java数组集合的深度复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java当我们想要对一个数组进行一些操作,同时又不希望对原来的数组数据有影响的时候,使用引用是不能满足我们的需求的,

  • Donald Knuth "过早的优化是一切罪恶的根源" 本章处理用策略让Python代码跑得更快。 先决条件 line_profiler gprof2dot 来自dot实用程序 2.4.1 优化工作流 让它工作起来:用简单清晰的方式来写代码。 让它可靠的工作:写自动的测试案例,以便真正确保你的算法是正确的,并且如果你破坏它,测试会捕捉到。 通过剖析简单的使用案例找到瓶颈,并且加速这些瓶颈,寻找更