小编Sam*_*ard的帖子

存储一组序列的所有子序列时减少内存使用

我有一组输入序列(表示为列表),对于每个输入序列,我都会生成一组其所有子序列(也包括列表)。这些子序列作为键存储在EQUAL哈希表中,并且永远不会进行垃圾回收或修改(但是,相关联的值会被修改)。

我的问题是,我目前用于实现此目的的方法使用的堆空间比我想要的要多得多。

为了弄清楚我在说什么,假设我们有一个序列:

#1=(A B C D)
Run Code Online (Sandbox Code Playgroud)

子序列为:

#2=()
#3=(A)
#4=(A B)
#5=(A B C)
#6=(A B C D)
#7=(B)
#8=(B C)
#9=(B C D)
#10=(C)
#11=(C D)
#12=(D)
Run Code Online (Sandbox Code Playgroud)

以下代码(我承认不是很好)会生成此集合(除了我实际上并不关心的空子序列):

(defun subseqs-of-length (length sequence)
  (if (< (length sequence) length)
      nil
      (loop for start from 0 to (- (length sequence) length)
           collect (subseq sequence start (+ start length)))))

(defun subseqs-of-length-< (length sequence)
  (loop for len from 1 to (1- length)
     append (subseqs-of-length len sequence)))

(defun all-subseqs (sequence)
    (subseqs-of-length-< (1+ (length sequence)) …
Run Code Online (Sandbox Code Playgroud)

common-lisp

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

并发垃圾收集器的常见Lisp实现

什么Common Lisp实现(如果有的话)提供并发垃圾收集器?

concurrency garbage-collection common-lisp

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

是什么决定了JavaScript函数是一个命名的匿名函数还是一个常规函数?

阅读"重新介绍JavaScript"我注意到一些有关函数的有趣内容:

如上所述提供给匿名函数的名称(或者至少应该是)仅对函数自己的范围可用.

根据nodejs提示中教程中的代码输入一些内容我能够验证该节点是否与作者一致:

function add(foo, bar) {
  return foo + bar;
}

add(1, 2);
Run Code Online (Sandbox Code Playgroud)

得到我3,并:

var five = (function plus(foo, bar) {
             return foo + bar;
           })(2, 3);
plus(2, 3);
Run Code Online (Sandbox Code Playgroud)

给我一个关于加上未定义的语法错误.

我有点困惑,因为我用来定义两个函数的代码是相同的(名称除外).JavaScript如何知道第一个是常规函数,第二个是命名匿名函数?

javascript syntax semantics

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

用于确定字符串是否为十六进制数的递归方法 - Java

这是一个功课问题,我遇到了一些麻烦.

编写一个递归方法,确定String是否为十六进制数.为您的方法编写javadocs.如果每个字符为0或1或2或3或4或5或6或7或8或9或a或A或b或B或c或C或d或D或e,则字符串为十六进制数字或E或f或f.

目前,我只能看到测试这个,如果字符串0处的字符是他给我的这些值中的一个,那么它的一部分是十六进制.

任何提示或建议,以帮助我?

这是我到目前为止:`

public boolean isHex(String string){


    if (string.charAt(0)==//what goes here?){
        //call isHex again on s.substring(1)
    }else return false;
    }
Run Code Online (Sandbox Code Playgroud)

`

java methods recursion hex

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

如何在构造函数数组中查找复制构造函数

我使用getConstructors()方法来拉取类的构造函数.该类在一个抽象的超类引用中,我不知道在用户决定之前调用哪个子类.这是我到目前为止所拥有的.

Weapon stickCopy = stick;
System.out.println(stick);
System.out.println(stickCopy);

Class <? extends Weapon> myClass = stick.getClass( );

System.out.println(myClass.getSimpleName( ));

Constructor<?>[] construct = myClass.getConstructors( );

for(Constructor<?> constructor: construct)
{
    System.out.println(constructor);
}

try
{
    stickCopy = (Weapon) construct[2].newInstance((stick));
}
catch (Exception e)
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}

System.out.println(stick);
System.out.println(stickCopy);
Run Code Online (Sandbox Code Playgroud)

Stick类是抽象Weapon类的子类.我试图找出存储在播放器对象中的武器参考的深拷贝的代码.由于Weapon是抽象的,我无法从中调用复制构造函数.在我的Stick类中,复制构造函数是第三个构造函数,因此我将2硬编码到try语句的构造数组中.如果我通过在复制构造函数前添加新构造函数或重新排序它们来更改stick类的构造函数,如何在运行时找到复制构造函数的位置?

另外,我之前从未使用过Generics,因此,如果我没有遵循通常被认为是良好的编程习惯,请更正我.

java generics reflection abstract-class copy-constructor

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

获取数组类型的Class对象的最佳方法是什么?

获取类的类文字很容易:

String.class
Run Code Online (Sandbox Code Playgroud)

但是如何获取数组类型的类对象?

这可行,但它很难看,可能不是编译时常量:

new byte[0].getClass()
Run Code Online (Sandbox Code Playgroud)

我查看了JLS,但我发现的唯一一件事就是根据JLS定义我所谓的"类文字"不是"文字".

java arrays reflection constants literals

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

从软键盘上按"DONE"键

我正在寻找可以从软键盘上按下"完成"按钮的代码.按下完成按钮后,我需要将按钮状态更改为启用,然后用户可以继续执行下一个活动.

我在stackoverflow上找到了这段代码,但我没有错误地实现它.你能帮我吗?

editText = (EditText) findViewById(R.id.edit_text);

editText.setOnEditorActionListener(new OnEditorActionListener() {
   @Override
   public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
       if (actionId == EditorInfo.IME_ACTION_DONE) {
           // do your stuff here
       }
       return false;
}
});
Run Code Online (Sandbox Code Playgroud)

这是整个.java文件

package com.example.start201;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class FirstActivity extends Activity {

   private EditText editText;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState); …
Run Code Online (Sandbox Code Playgroud)

java android

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