小编Pie*_*ard的帖子

这个Java算法如何更快

我有这个循环,它将布尔的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)

java algorithm binary ascii linked-list

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

简单运用unix fork理解

考虑以下说明:

for(int i = 0; i < 3; i++)
    fork();
Run Code Online (Sandbox Code Playgroud)

我试着弄清楚创建过程的数量和图形创建的步骤.

所以上面的代码等同于:

fork();
fork();
fork();
Run Code Online (Sandbox Code Playgroud)

此图表说明了此问题的官方答案:

图形

我无法想象如何创建此图表.

这就是我绘制图形的方法.

  1. 所以,第一个fork将创建父进程(p1)的子副本(p2).我们有2个过程.

  2. 第二个fork,将通过创建子进程(p3和p4)复制p1和p2父级.

  3. 第三个分支,将通过创建子进程(p5,p6,p7,p8)复制p1,p2,p3和p4

如何获得与我老师相同的图表?

unix fork

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

为什么这个C代码输出1

有什么理由可以:

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概念,指针和一切的新手.

c computation

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

String.intern是否只是复制Java中的对象引用?

是在做:

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池中?

java string-interning

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

删除特定对象在Java ArrayList中不起作用

我有一个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 arraylist

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