相关疑难解决方法(0)

何时在Java中使用LinkedList而不是ArrayList?

我一直只是一个人使用:

List<String> names = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我使用接口作为可移植性的类型名称,因此当我问这些问题时,我可以重新编写代码.

何时应该LinkedList使用,ArrayList反之亦然?

java collections linked-list arraylist

2974
推荐指数
27
解决办法
102万
查看次数

简单的StringBuilder构造函数/方法问题

我有一个StringIndexOutOfBoundsExceptionsetCharAt(int index, char ch):

StringBuilder word = new StringBuilder(4);

for(int i = 0; i < 4; i++)
    word.setCharAt(i,'-');
Run Code Online (Sandbox Code Playgroud)

StringBuilder(int capacity):构造一个不包含字符的字符串构建器以及capacity参数指定的初始容量.

setCharAt(int index, char ch):指定索引处的字符设置为ch.

我唯一能想到的是没有分配内存,但那又有什么意义StringBuilder(int capacity)呢?

java

5
推荐指数
2
解决办法
350
查看次数

StringBuilder中length()和capacity()方法的区别

我试图弄清楚何时使用或为什么capacity()方法与length()方法StringBuilderStringBuffer类不同.

我搜索了Stack Overflow并设法得出这个答案,但我不明白它与length()方法的区别.我也访问了这个网站,但这对我帮助更少.

java stringbuilder stringbuffer

2
推荐指数
1
解决办法
1609
查看次数

StringBuffer 的容量如何增加?

我在 Java 中尝试了 StringBuffer 类的构造函数,但我对 StringBuffer(int initial ) 构造函数的工作感到困惑。

我知道它为缓冲区提供了初始容量,但我怀疑,当提供的初始容量实际上小于对象的长度时,在这种情况下容量如何增加?

我尝试了两种情况,在第一种情况下:

StringBuffer str = new StringBuffer(11);
str.append("Hello World!");
System.out.println(str.length() + " " + str.capacity()); //prints 12 24
Run Code Online (Sandbox Code Playgroud)

即容量变为字符串长度的两倍

在第二个:

StringBuffer str = new StringBuffer(10);
str.append("Hello World!");
System.out.println(str.length() + " " + str.capacity()); //prints 12 22
Run Code Online (Sandbox Code Playgroud)

即容量变为长度 + 初始缓冲容量

那么为什么缓冲区大小会有如此不同的增加。在这两种情况下,初始容量都小于字符串长度,因此在两种情况下它都应该加倍到长度变为 24,或者加起来等于初始缓冲区,在第一种情况下变为 23,在第二种情况下变为 22。我也阅读了文档和其他各种博客,但我能找到的只是 StringBuffer 类的构造函数和函数的基本用法。

请帮帮我。谢谢你。

java stringbuffer

-1
推荐指数
1
解决办法
1271
查看次数