Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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_Arrays_List_Collections - Fatal编程技术网

数组足够时使用Java列表

数组足够时使用Java列表,java,arrays,list,collections,Java,Arrays,List,Collections,如果您事先知道列表的大小,并且还可以在其中使用数组,那么建议使用Java集合列表吗?是否存在性能缺陷 列表是否可以像数组一样在单个语句中使用元素进行初始化(所有元素的列表用逗号分隔)?集合/列表更灵活,提供了更多实用方法。对于大多数情况,任何性能开销都可以忽略不计 对于此单语句初始化,请使用: Arrays.asList(yourArray); 发件人: 返回指定数组支持的固定大小列表。(对返回列表的更改“直写”到数组。)此方法与collection.toArray相结合,充当基于数组和基于集

如果您事先知道列表的大小,并且还可以在其中使用数组,那么建议使用Java集合列表吗?是否存在性能缺陷


列表是否可以像数组一样在单个语句中使用元素进行初始化(所有元素的列表用逗号分隔)?

集合/列表更灵活,提供了更多实用方法。对于大多数情况,任何性能开销都可以忽略不计

对于此单语句初始化,请使用:

Arrays.asList(yourArray);
发件人:

返回指定数组支持的固定大小列表。(对返回列表的更改“直写”到数组。)此方法与collection.toArray相结合,充当基于数组和基于集合的API之间的桥梁。返回的列表可序列化并实现随机访问

我的猜测是,这是转换为列表的最明智的方式,但我可能错了

如果您事先知道列表的大小,并且还可以在那里使用数组,那么建议使用Java集合列表吗?性能缺陷???

如果一个数组足够,那么就使用一个数组。只是为了保持简单。您甚至可以从中获得稍微好一点的性能。记住,如果你

  • 是否需要将结果数组传递给接受
    集合的方法,或者
  • 如果您需要使用
    列表
    -方法,如
    .contains
    .lastIndexOf
    ,或其他方法,或
  • 如果需要使用
    集合
    方法,如
    反向
然后我们不妨从头开始学习
集合
/
列表

如何在单个语句中使用元素初始化列表,如数组={所有元素的列表以逗号分隔}?

你能行

List<String> list = Arrays.asList("foo", "bar");
List List=Arrays.asList(“foo”、“bar”);

List arrayList=新的arrayList(Arrays.asList(“foo”,“bar”));

List List=newarraylist(){{add(“foo”);add(“bar”);};
建议使用Java吗 当您 事先知道清单的大小 你也可以在那里使用数组? 性能缺陷

使用列表而不是数组是完全可以接受的,即使您事先知道大小

如何使用初始化列表 单个语句中的元素,如 数组={所有元素的列表 用逗号分隔}

请参见
Arrays.asList()

1)集合是最基本的类型,仅表示存在对象集合。如果没有顺序或重复使用
java.util.Set
,如果有可能的重复和顺序使用
java.util.List
,是否有顺序但没有重复使用
java.util.SortedSet

2) 用花括号实例化一个数组,Arrays.asList()加上类型推断的泛型

List<String> myStrings = Arrays.asList(new String[]{"one", "two", "three"});
List myStrings=Arrays.asList(新字符串[]{“一”、“二”、“三”});
还有一个使用匿名类型的技巧,但就我个人而言,我不太喜欢:

List<String> myStrings = new ArrayList<String>(){
// this is the inside of an anonymouse class
{
    // this is the inside of an instance block in the anonymous class
    this.add("one");
    this.add("two");
    this.add("three");
}};
List myStrings=new ArrayList(){
//这是匿名类的内部
{
//这是匿名类中实例块的内部
本条。添加(“一”);
本条。添加(“两”);
本条添加(“三”);
}};
是的,建议这样做

一些不同的列表构造函数(如ArrayList)甚至采用参数,这样您就可以“预分配”足够的备份存储,从而在添加元素时减少列表“增长”到适当大小的需要

如果您事先知道列表的大小,并且还可以在其中使用数组,那么建议使用Java集合列表吗

在某些(可能是大多数)情况下是的,无论如何使用集合是绝对可取的,在某些情况下是不可取的

在赞成方面:

  • 如果使用列表而不是数组,则代码可以使用诸如
    包含
    插入
    删除
    等方法
  • 许多库类都需要集合类型的参数
  • 您不必担心下一版本的代码可能需要一个更具动态性的数组。。。这将使最初基于数组的方法成为一种负担
在反面:

  • 集合的速度稍慢,如果数组的基类型是基类型,则更慢
  • 集合确实占用更多内存,特别是当数组的基类型是基元类型时
但性能很少是一个关键问题,在许多情况下,性能差异与全局无关


在实践中,在确定阵列的大小时,通常会降低性能和/或代码复杂性。(假设您使用了一个
char[]
来保存一个系列的串联。您可以计算出数组需要有多大;例如,通过将组件字符串大小相加。但是它很混乱!)

需要考虑不同的事情:数组的类型已知吗?谁访问阵列? 阵列存在几个问题,例如:

  • 不能创建泛型数组
  • 数组是协变的:如果A扩展了B->A[]扩展了B[],这可能会导致ArrayStoreException
  • 不能使数组的字段不可变
另请参阅《有效Java》一书的第25项“首选列表而非数组”

也就是说,有时数组很方便,例如新对象。。。参数语法

如何在单个语句中使用元素初始化列表,如数组={所有元素的列表以逗号分隔}


Arrays.asList():

在JSE中没有集合.asList(String…
,但现在我看到
List<String> myStrings = Arrays.asList(new String[]{"one", "two", "three"});
List<String> myStrings = new ArrayList<String>(){
// this is the inside of an anonymouse class
{
    // this is the inside of an instance block in the anonymous class
    this.add("one");
    this.add("two");
    this.add("three");
}};