相关疑难解决方法(0)

"java -server"和"java -client"之间的真正区别?

"java -server"和"java -client"之间有什么实际的区别吗?我在Sun的网站上找到的只是一个模糊的" - 服务器启动较慢但应该运行得更快".有什么真正的区别?(目前使用JDK 1.6.0_07.)

java jvm jvm-hotspot

380
推荐指数
8
解决办法
23万
查看次数

308
推荐指数
8
解决办法
42万
查看次数

在Java中迭代数组的最快方法:循环变量vs增强语句

在Java中,以老式的方式迭代数组是否更快,

for (int i = 0; i < a.length; i++)
    f(a[i]);
Run Code Online (Sandbox Code Playgroud)

或者使用更简洁的表格,

for (Foo foo : a)
    f(foo);
Run Code Online (Sandbox Code Playgroud)

对于ArrayList,答案是否相同?

当然,对于大量的应用程序代码,答案是它没有明显的区别,因此应该使用更简洁的表单来提高可读性.然而,我正在研究的背景是重型技术计算,必须执行数十亿次操作,因此即使很小的速度差异也可能最终显着.

java iteration performance

28
推荐指数
3
解决办法
7万
查看次数

将逗号分隔的字符串转换为没有中间容器的列表

我需要将逗号分隔的字符串转换为整数列表.例如,如果我有以下字符串

String numbersArray = "1, 2, 3, 5, 7, 9,";
Run Code Online (Sandbox Code Playgroud)

有没有办法如何立即将其转换为List<Integer>

现在我只看到一种方法.

List<String> numbers = Arrays.asList(numbersArray.split(","));
Run Code Online (Sandbox Code Playgroud)

然后

List<Integer> numbersInt = new ArrayList<>();
for (String number : numbers) {
    numbersInt.add(Integer.valueOf(nubmer));
}
Run Code Online (Sandbox Code Playgroud)

我很好奇有没有办法如何错过分享,List<String>并在第一次开始转换它List<Integer>

java

17
推荐指数
3
解决办法
4万
查看次数

Java中的零垃圾大字符串反序列化,Humongous对象问题

我正在寻找一种方法来Stringbyte[]Java中反序列化尽可能少的垃圾.因为我正在创建自己的序列化器和反序列化器,所以我可以完全自由地在服务器端(即在序列化数据时)和客户端(即在反序列化数据时)实现任何解决方案.

我已经设法通过迭代chars()并将每个(16位值)转换为2x 8位值来有效地序列化 a String而不会产生任何垃圾开销.有这方面一个很好的辩论在这里.另一种方法是使用Reflection 直接访问底层,但这超出了问题的范围.String'sString.charAt(i)charString'schar[]

但是,我似乎不可能在byte[]没有创建char[] 两次的情况下反序列化,这似乎很奇怪.

程序,流程:

  1. 创建 char[]
  2. 迭代byte[]并填写char[]
  3. 使用String(char[])构造函数创建String

由于Java的String不变性规则,构造函数复制char [],创建2x GC开销.我总是可以使用机制来规避这个(不安全的String分配+反射来设置char[]实例),但我只是想问一下,除了我违反每一个关于String's不变性的约定之外是否还有其他后果.

当然,对此最明智的回应是"来吧,停止这样做,并相信GC,原来char[]将是非常短暂的,G1将暂时摆脱它",这实际上是有道理的,如果char[]它更小比G1的区域大小的1/2.如果它更大,char []将直接分配为一个巨大的对象(即自动传播到G1的区域之外).这些物体很难在G1中有效地进行垃圾收集.这就是每个分配都很重要的原因.

关于如何解决这个问题的任何想法?

非常感谢.

java serialization garbage-collection g1gc java-8

7
推荐指数
1
解决办法
1406
查看次数

从大字符串一次读取一个字符

我有一个最多有100000个字符的大字符串.我没有使用string.charAt[index]从字符串中读取字符,而是使用string.toCharArray()方法将该字符串转换为char数组,现在我正在使用charArray[index].这比string.charAt[index]方法花费的时间少.但是我想知道,有没有比string.toCharArray();方法更快的其他方法?

java arrays string

6
推荐指数
1
解决办法
1万
查看次数

Java - 遍历String的最有效方法

可能重复:
在Java中迭代字符串字符的最简单/最好/最正确的方法是什么?

我正在考虑的是时间和效率.考虑到这些,哪种方法(在下面的方法或其他未提及的方法)是最有效的方法来遍历字符串的每个字符?

String str = "Foo Bar";
for(int i=0;i<str.length();i++)
   System.out.println(str.charAt(i)); // access the character using .charAt()

for(char letter: str.toCharArray)
   System.out.println(letter);       // use for-each loop with the char array.
Run Code Online (Sandbox Code Playgroud)

同样,可能有更好的方法来做到这一点,但我也很好奇上面两者之间是否存在重大的时间/资源差异.

java string

6
推荐指数
1
解决办法
4万
查看次数

Java字符串 - 比较charAt()和索引运算符[]

我想知道使用.charAt()是否比将字符串变量转换s为char [] a数组更快,a[i]而不是通过s.charAt(i)

假设我们正在研究字符串中每个字符上有很多运算符的问题.

java string indexing character

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

String的第一个字母为Char

我所拥有的是一名有名字和简历的学生

所以我有一个班级学生喜欢:

private String name = "Unknown";

private char nameLetter = "u"; 

public void identify()
{
    System.out.println("Student first letter : " + nameLetter);
    System.out.println("Student name : " + name);

}

public void setName(String newName)
{
    name = newName;
    nameLetter = newName.substring(0);
}
Run Code Online (Sandbox Code Playgroud)

但我得到的错误不能从字符串转换为字符.

我知道我可以创建一个String nameLetter而不是char,但我想用char尝试它.

java string

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