我有这个循环,它将布尔的LinkedList拆分为8位,并返回缓冲区中每个字节的ASCII值.该函数返回字符串缓冲区.
如果LinkedList的大小很大,此代码非常慢.我尝试Iterator用简单的循环来改变它,但它仍然很慢.
这个算法怎么能真快?也许有多线程?
注意: linkedList的大小并不总是被8整除.
public String toString(){
String buffer = "";
String output = "";
LinkedList<Boolean> bits = this.bits;
for(Iterator it = this.bits.iterator(); it.hasNext();){
if(buffer.length() >= 8){
output += (char)Integer.parseInt(buffer, 2);
buffer = "";
}
buffer += ((Boolean)it.next() == false) ? "0" : "1";
}
if(buffer != "")
output += (char)Integer.parseInt(buffer, 2);
return output;
}
Run Code Online (Sandbox Code Playgroud) 考虑以下说明:
for(int i = 0; i < 3; i++)
fork();
Run Code Online (Sandbox Code Playgroud)
我试着弄清楚创建过程的数量和图形创建的步骤.
所以上面的代码等同于:
fork();
fork();
fork();
Run Code Online (Sandbox Code Playgroud)
此图表说明了此问题的官方答案:
我无法想象如何创建此图表.
这就是我绘制图形的方法.
所以,第一个fork将创建父进程(p1)的子副本(p2).我们有2个过程.
第二个fork,将通过创建子进程(p3和p4)复制p1和p2父级.
第三个分支,将通过创建子进程(p5,p6,p7,p8)复制p1,p2,p3和p4
如何获得与我老师相同的图表?
有什么理由可以:
void function_foo(){
int k[8];
function_math(k, 8);
}
void function_math(int *k, int i){
printf("value: %d", k[i]);
}
Run Code Online (Sandbox Code Playgroud)
主要执行function_foo();
输出将是1?矩阵k的元素没有初始化.也许在内存中有int长度的东西?
我是C概念,指针和一切的新手.
是在做:
String a = new String();
String b = a;
Run Code Online (Sandbox Code Playgroud)
并做:
String a = new String();
String b = a.intern();
Run Code Online (Sandbox Code Playgroud)
是一样的吗?
实际上,如果我测试,参考是完全相同的:
String a = new String("te");
String b = a.intern();
String c = a;
String d = "t" + "e";
System.out.print(a.equals(b));
System.out.print(b.equals(c));
System.out.print(a.equals(d));
Run Code Online (Sandbox Code Playgroud)
因为String将永远在String池中?
我有一个ArrayList包含对其父对象的引用的对象.
我试图删除特定父对象中的每个对象(所以等于父对象).
如果我做:
System.out.println(parent);
Run Code Online (Sandbox Code Playgroud)
我的控制台输出:
ParentObject@1f8166e5
Run Code Online (Sandbox Code Playgroud)
如果我做:
for(int i = 0; i < array.size(); i++){
if(array.get(i).getParent().equals(parent)){
array.remove(i);
}
}
Run Code Online (Sandbox Code Playgroud)
并且(测试)
for(int i = 0; i < array.size(); i++){
if(array.get(i).getParent().equals(parent)){
System.out.println(parent + ":" + array.get(i).getParent());
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制台输出如下:
ParentObject@1f8166e5:ParentObject@1f8166e5
Run Code Online (Sandbox Code Playgroud)
上面的代码片有什么问题?为什么array.remove(i)不工作?
java ×3
algorithm ×1
arraylist ×1
ascii ×1
binary ×1
c ×1
computation ×1
fork ×1
linked-list ×1
unix ×1