首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将List <T>初始化为给定大小(而不是容量)?

要将List <T>初始化为给定大小,您可以使用以下方法:

  1. 使用Java 8的Stream API:
代码语言:java
复制
List<T> list = Stream.generate(null).limit(size).collect(Collectors.toList());
  1. 使用Java的for循环:
代码语言:java
复制
List<T> list = new ArrayList<>(size);
for (int i = 0; i< size; i++) {
    list.add(null);
}
  1. 使用Apache Commons Lang库中的Arrays.asList()方法:
代码语言:java
复制
List<T> list = new ArrayList<>(Arrays.asList(new T[size]));
  1. 使用Java的循环和增强for循环:
代码语言:java
复制
List<T> list = new ArrayList<>(size);
for (int i = 0; i< size; i++) {
    list.add(null);
}

在这些方法中,您可以将T替换为您要使用的实际类型。这将创建一个具有给定大小的列表,并将所有元素初始化为null。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Go语言中常见100问题-#21 Inefficient slice initialization

每次当底层数组满时会创建一个容量加倍的数组。所以在添加第三个、第五个和第九个元素时,由于当前数组已满创建另一个数组的逻辑会重复多次。...可看到给定预期大小容量或长度(上面的实现2和实现3)比不分配任何长度和容量快大约400%。...前面不是说方法3效率更高吗?如果我们使用给定的长度不是容量,则实现代码如下。因为要通过索引给切片中的元素赋值,程序看起来更复杂些。...例如,下面代码中,输出切片的大小依赖于条件函数 something(foo), 这种情况下,在初始化bars切片的时候,是初始化为空,还是设置为固定大小的长度或容量呢?...通过前面的分析,如果提前已知道切片的长度是多少,就不要创建一个大小为0的空切片,采用分配给定容量给定长度对切片进行初始化是最佳选择。

24620

JDK源码分析-ArrayList

因此,该无参构造器的作用就是将 elementData 初始化为一个 Object 类型的空数组。 2....当初始容量为 0 时,elementData 被初始化为 EMPTY_ELEMENTDATA,该变量如下: private static final Object[] EMPTY_ELEMENTDATA...若未指定初始容量 当第一次执行 add() 方法时,将数组长度默认初始化为 10,之后再添加元素时不扩容,直至容量等于 10,再添加第 11 个元素时,将容量扩容为 15 (10 + 10 >> 1)...新容量大小 默认扩容后数组的容量为原数组容量的 1.5 倍;若仍未达到所需大小(使用 addAll() 方法时可能出现),则扩容为所需的容量。...elementData.length=2, size=1;之后 T2 再执行 ensureCapacityInternal() 方法时,因为初始 size=1, T1 扩容后 elementData.length

36620

Java集合篇之深入解析ArrayList,这六问你答的上来吗?

5、ArrayList创建时不需要指定大小Array创建时必须指定大小。 问二:ArrayList和Vector的区别?...,可以保证线程安全,ArrayList则不是,因此,ArrayList相较于Vector拥有良好的性能;两者的扩容也存在着不同,默认初始容量都是10,Vector 扩容默认会翻倍,可指定扩容的大小;...java.io.Serializable { private static final long serialVersionUID = 8683452581122892189L; /** * 默认初始容量大小...initialCapacity); } } /** * 默认无参构造函数 * DEFAULTCAPACITY_EMPTY_ELEMENTDATA 为0.初始化为...10,在添加元素大于初始容量后,会触发扩容,数组的扩容是将原数组中的元素拷贝到一个新数组中,将数组容量增加为原数组1.5倍。

8100

一个模板搞定各种背包问题

模板统一采用二维数组来表示动态规划的状态,其中行表示物品的价值(或体积、大小、重量等),列表示背包的容量(或目标值)。 行和列都增加了一位,即从1开始计数,一来可以避免边界检查,二来dp[...]...[0]*(amount+1) for _ in range(n)] for j in range(1,amount+1): #初始化为极值 dp[0][j]=float('inf'...例如,1、4、9 和 16 都是完全平方数, 3 和 11 不是。...把正整数n抽象化为背包容量,从1开始的正整数抽象化为物品,其重量是值的平方。它的平方不能超过n,所以可以确定数字的上限。...所以尽可能使2组的石头重量倾向于总重量的一半,问题变成01背包问题:给定一些石头和一个指定容量的背包,最多可以装多少重量的石头(不能超过背包容量)。

38110

HashMap 和 Hashtable 的区别

初始容量大小和每次扩充容量大小的不同 : ① 创建时如果不指定容量初始值,Hashtable 默认的初始大小为 11,之后每次扩充,容量变为原来的 2n+1。HashMap 默认的初始大小为 16。...之后每次扩充,容量变为原来的 2 倍。...② 创建时如果给定容量初始值,那么 Hashtable 会直接使用你给定大小 HashMap 会将其扩充为 2 的幂次方大小(HashMap 中的tableSizeFor()方法保证,下面给出了源代码...底层数据结构: JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,不是转换为红黑树...)时,将链表转化为红黑树,以减少搜索时间。

83530

【Netty】「源码解析」(二)HeapBuffer 创建过程详解:高效可靠的内存管理技巧

其中,initialCapacity 是代表缓冲区初始容量的整数参数,由开发者自定义传入, maxCapacity 是代表缓冲区最大容量的整数参数,一般默认值为 Integer.MAX_VALUE。...然后,方法调用 allocate 方法,该方法会在给定的缓存 cache 中,为 buf 对象分配所需的空间,容量大小由 reqCapacity 决定。...值得注意的是,对象的引用计数值被初始化为2: public final void resetRefCnt(T instance) { updater().set(instance, initialValue...该方法首先将请求的内存大小规范化为合适的大小,然后分为三种情况: 内存较小(小于等于页大小):如果请求的内存大小小于等于 Tiny 或 Small 内存块的最大容量,则从 Tiny 或 Small 内存块分配内存...然后,通过 allocate() 方法在该节点所属的内存页的内存块中分配空间,并将其初始化为 buf 对象。最后,增加 Tiny Subpage 类型的内存分配计数器,并返回分配结果。

22210

HashMap在JDK1.7以及JDK1.8的区别?

1.1.实例化:在底层直接创建Entry[]一维空数组,在第一次put元素时进行初始化和计算容量,数组长度为大于等于给定Size的最小2的次幂。...在第一次put元素时进行初始化和计算容量,数组长度为大于等于给定Size的最小2的次幂。 2.2.插入键值对: 与JDK1.7相同,区别是存在链表转化为红黑树的树化,以及节点插入为尾插法。...3.JDK1.8中一些其他细节 3.1.加载因子:在进行扩容时,会进行阈值的判断,这个阈值大小是通过当前的数组的容量和一个加载因子进行确定的。...当它们变得太小(由于移除或调整大小)时,它们会被转换回普通的bin。理想情况下,在随机哈希代码下,bin中的节点频率遵循泊松分布,下面就是list size k 的频率表。...3.5.为什么把链表转化为红黑树的阈值是8,不是6、7或者不是20呢? 这个问题其实和3.3.差不多,但3.3只回答了一部分。 即为什么不是6,是综合了性能和时间效率。 那为什么不是7?

45400

常见编程模式之动态规划:0-1背包问题

0-1 背包问题的通用形式为:给定 件物品和一个容量为 的背包,放入第 件物品耗费的「费用」是 (即背包容量),得到的「价值」是 ,求解将哪些物品装入背包可使得价值总和最大。...件物品的策略(放或者不放),则可以将其转化为一个只和前 件物品相关的问题。...如果不放第 件物品,则问题转化为“前 件物品放入容量为 的背包中”,价值为 ;如果放第 件物品,则问题转化为“前 件物品放入剩下的容量为 的背包中”,此时的价值为...伪代码如下: 在上述伪代码中,当物品数量为 0 时初始化的值均为 0,这可能需要基于题目的要求进行变化。...这道题看似和背包问题无关,但如果我们将元素和看做背包容量,则该问题可以转化为给定 N 个物品和一个容量为 sum/2 的背包,每个物品对应的容量为其元素大小,那么是否可以挑选出部分物品使得背包恰好装满

1.2K10

HashMap 和 Hashtable 的区别

线程安全: HashMap 是非线程安全的, Hashtable 是线程安全的,因为 Hashtable 内部的方法,基本都经过 synchronized 修饰(如果要确保线程安全,建议使用 ConcurrentHashMap...null 可以作为键,这样的键最多可以有一个,但可以有一个或多个键所对应的值为 null;在 Hashtable 中,键和值都不能为 null,否则会直接抛出 NullPointerException; 初始容量大小和扩容的机制不同...: ① 创建时,如果未指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的 2n+1;HashMap 默认的初始大小为16,之后每次扩充,容量变为原来的2倍; ②...创建时,如果给定容量初始值,Hashtable 将直接使用给定大小作为初始容量 HashMap 会将其扩充为2的幂次方大小,也就是说, HashMap 总是使用2的幂作为哈希表的大小; 底层数据结构...: JDK1.8 以后,HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,会自动将链表转化为红黑树,以减少搜索时间, Hashtable 没有这样的机制。

45120

动态规划之----01背包题目解析

容量给定的数组中的所有元素之和 / 2得到的结果 + 1 就是最大容量‘【加一是因为整除他会向下取整】 容量最大值 : 【注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200...dp[j] = Math.max(dp[j] , dp[j - nums[i]] + nums[i]) dp的初始化 及大小 对于dp数组而言 , 它的初始化 是根据题意来进行写的, 我们这里就是初始化为...0 dp数组的大小 也就是背包的所能承受的最大重量 容量给定的数组中的所有元素之和 / 2得到的结果 + 1 就是最大容量‘【加一是因为整除他会向下取整】 容量最大值 : 【注意: 每个数组中的元素不会超过...= y,那么重量为 x 的石头将会完全粉碎,重量为 y 的石头新重量为 y-x。...+ nums[i]) dp数组的初始化 这里我们全部初始化为0 即可 大小 :也就是数组中的所有元素之和 / 2得到的结果 + 1 就是最大容量【加一是因为整除他会向下取整】 确定遍历顺序 和前面的题一样

8010

Java集合框架

3 AbstractSequentialList 继承于 AbstractList ,提供了对数据元素的链式访问不是随机访问。...内存空间占用: ArrayList的空 间浪费主要体现在在list列表的结尾会预留一定的容量空间,LinkedList的空间花费则体现在它的每一个元素都需要消耗比ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据...Arraylist不是同步的,所以在不需要保证线程安全时时建议使用Arraylist。...初始容量大小和每次扩充容量大小的不同 : ①创建时如果不指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。HashMap 默认的初始大小为16。...之后每次扩充,容量变为原来的2倍。②创建时如果给定容量初始值,那么 Hashtable 会直接使用你给定大小 HashMap 会将其扩充为2的幂次方大小

98210

java集合【8】-- ArrayList接口源码解析

s.readInt(); // ignored if (size > 0) { // 和clone()类似,根据size分配空间,不是容量...如果我们创建的时候不指定大小,那么就会初始化一个默认大小为10,DEFAULT_CAPACITY就是默认大小。...如果元素是默认初始haul的空数据,那么所需要的最小容量就是默认容量和最小容量对比,两者取最大,也就是突然有加入有6个元素加到集合中来,那么默认容量是10,会直接初始化为10,如果一下子有11个元素加进来...// 如果元素是默认初始haul的空数据,那么所需要的最小容量就是默认容量和最小容量对比,两者取最大。...默认的初始容量是10,容量不够的时候,扩容时候增加为原先容量的一般,也就是原来的1.5倍。

35700

ArrayList实现原理分析(Java源码剖析)ArrayList使用的存储的数据结构ArrayList的初始化ArrayList是如何动态增长ArrayList如何实现元素的移除ArrayList

下面我们依次来分析 public ArrayList(int initialCapacity) 当我们初始化的时候,给ArrayList指定一个初始大小的时候,就会调用这个构造方法。...,会是一个共享的类变量,也就是一个Object空数组,当第一次add的时候,这个数组就会被初始化一个大小为10的数组。...然后根据这个array的大小进行判断,如果不为0,就调用Arrays的copyOf的方法,复制到Object数组中,完成初始化,如果为0,就直接初始化为空的Object数组。...ArrayList小结 ArrayList是List接口的一个可变大小的数组的实现 ArrayList的内部是使用一个Object对象数组来存储元素的 初始化ArrayList的时候,可以指定初始容量大小...,如果不指定,就会使用默认大小,为10 当添加一个新元素的时候,首先会检查容量是否足够添加这个元素,如果够就直接添加,如果不够就进行扩容,扩容为原数组容量的1.5倍 当删除一个元素的时候,会将数组右边的元素全部左移

1.6K30

java集合【8】——— ArrayList源码分析

s.readInt(); // ignored if (size > 0) { // 和clone()类似,根据size分配空间,不是容量...如果我们创建的时候不指定大小,那么就会初始化一个默认大小为10,DEFAULT_CAPACITY就是默认大小。...如果元素是默认初始haul的空数据,那么所需要的最小容量就是默认容量和最小容量对比,两者取最大,也就是突然有加入有6个元素加到集合中来,那么默认容量是10,会直接初始化为10,如果一下子有11个元素加进来...// 如果元素是默认初始haul的空数据,那么所需要的最小容量就是默认容量和最小容量对比,两者取最大。...默认的初始容量是10,容量不够的时候,扩容时候增加为原先容量的一半,也就是原来的1.5倍。

29520

HashTable 源码解析

方法解析 构造函数 初始化HashTable时,都会直接进行容量初始化。 // public Hashtable(Map t) { this(Math.max(2*t.size(), 11), 0.75f); putAll(t); } // 设置指定容量和加载因子,初始化HashTable...Null value的支持:HashMap中,null可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为null;HashTable中key和value都不能为null,否则抛出空指针异常; 初始容量大小和每次扩充容量大小的不同...创建时如果不指定容量初始值,Hashtable默认的初始大小为11,之后每次扩容,容量变为原来的2n+1。...HashMap默认的初始大小为16。之后每次扩充,容量变为原来的2倍; 创建时如果给定容量初始值,那么Hashtable会直接使用你给定大小HashMap会将其扩充 为2的幂次方大小

37551
领券