我需要从任何数字x到0总和2的幂.如果x = 6,所需的总和是2pow6 + 2pow5 + ..... 1.虽然我总是可以编写一个使用Math.pow降低到0的算法 - 这个函数在循环中似乎是性能上的臭名昭着.如果有人可以使用移位二元运算符帮助实现相同的目标,我将不胜感激 - 我听说它们比pow更有效率.
给定以下数据结构,找出交集的最有效方法是什么 - 这两个数据结构都是通用的.
dict1 = {'2A':'....','3A':'....','4B':.....}
list1 = [......,'2A','4B'.....]
Expected output = ['2A','4B']
Run Code Online (Sandbox Code Playgroud)
我可以将列表(不是dict1)组织到任何其他数据结构中,如果它也产生更快的输出.由于这个查找有2个可以完成大量的决策 - 速度至关重要.
我有一个元组列表:
l=[('soccer',11),('tennis',2),('chess',2),('xanadu',None)]
Run Code Online (Sandbox Code Playgroud)
假设我们定义一个函数如下:
def func(x):
if type(x) is int:
return x*2
else:
return None
Run Code Online (Sandbox Code Playgroud)
我需要将此函数应用于每个元组的元素[1],并将结果返回为以元素[0]为键的字典.
这可能是对列表'l'的理解吗?
只是为了让事情变得有趣 - 我需要只包含那些func(x)返回int的结果.
预期产量:
{'soccer':22,'tennis':4,'chess':4}
Run Code Online (Sandbox Code Playgroud) 我有一本字典 - 其中的值是字典本身.
如何以最有效的方式从子词典中提取唯一的值集?
{ 'A':{'A1':'A1V','B2':'A2V'..},
'B':{'B1':'B1V','B2':'B2V'...},
...}
Run Code Online (Sandbox Code Playgroud)
预期产量:
['A1V','A2V','B1V','B2V'...]
Run Code Online (Sandbox Code Playgroud) 我认为以下应该可以做到这一点 - 但似乎并非如此。
int[] jokes=new int[]{5,7,8,9,3,4,6,1,7};
for(int k=0;k<jokes.length && jokes[k]%2==0;k++){
System.out.println(jokes[k]);
}
Run Code Online (Sandbox Code Playgroud)
无论如何,在函数内求值都会起作用 - 但想检查是否有一种方法可以在 for 循环定义本身中过滤搜索(也许通过在循环定义本身中调用函数?)如果我们能够实现这一点,那就太酷了。
当我们实习字符串时,我们确保该字符串的所有使用都指向同一个实例.
我假设底层字符串对象在堆中.
但是,引用变量存储在内存中的哪个位置?
它是否具有与以下相同的行为static
- 其中引用存储在permgen中并且仅在类加载器(和应用程序)退出后才使字符串实例可用于gc?
我有一个包含一些lambda元素的列表:
l=['A',lambda x:x*2,lambda x:x*3]
Run Code Online (Sandbox Code Playgroud)
在执行lambda之后如何将此列表附加到另一个(如下所示 - 显然这个不起作用):
m=list(k=k(3) if isinstance(k,types.FunctionType) else k for k in l)
Run Code Online (Sandbox Code Playgroud)
预期的是:
m=['A',6,9]
Run Code Online (Sandbox Code Playgroud)
这可能吗?
对于大型文件或管道流,缓冲支持的解决方案(BufferedInputStream/ByteArrayInputStream)显然不是可行的方法.如果有人能告诉我处理这种情况的推荐方法,我将不胜感激.
我可以想到这一点 - 但可能不是那里最好或最有效的方法:
public class Streams {
public static void main(String[] args) throws IOException {
DataInputStream reader=null;
try{
try {
reader=new DataInputStream(new FileInputStream("/path/file"));
} catch (FileNotFoundException e1) {
throw e1;
}
while(true) {
try {
byte a=reader.readByte();
}
catch(EOFException e) {
//consume
}
catch (IOException e) {
//throw
throw e;
}
//do something
}
}
finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我看到一个奇怪的问题,eclipse并没有识别我的lambda参数
public static void main(String[] args) {
int[] array = {23,43,56,97,32};
int sum1 = Arrays.asList(array).stream().reduce(0, (total, e) -> total + e).intValue();
}
Run Code Online (Sandbox Code Playgroud)
我得到total
并且e
无法解决变量.
我看到'total'和'e'被用作参数而没有声明的例子.
但是,在我的情况下 - 它拒绝编译而不声明.
这是什么问题?
我试图实现一个通用的callable来委派不同类型的帐户的修改.代码如下所示:
import java.util.concurrent.Callable;
class Task<T extends BaseAccount> extends Callable<T extends BaseAccount> {
private final T t;
public Task(T t) {
this.t = t;
}
@Override
public T call() throws Exception {
t.increment();
return t;
}
}
Run Code Online (Sandbox Code Playgroud)
BaseAccount只是一个抽象类,如下所示:
abstract class BaseAccount {
abstract public void increment();
}
Run Code Online (Sandbox Code Playgroud)
但显然我没有到达那里,因为我看到很多与泛型有关的编译错误.希望通过这一点获得帮助.
我有一个字典,其中值元素是列表:
d1={'A': [], 'C': ['SUV'], 'B': []}
Run Code Online (Sandbox Code Playgroud)
只有当列表非空时,我才需要将值连接到单个列表中.
预期产量:
o=['SUV']
Run Code Online (Sandbox Code Playgroud)
感谢帮助.
这种情况有什么问题:
private static final Integer LOCK=0;
synchronized(LOCK){
//work
}
Run Code Online (Sandbox Code Playgroud)
建议不要使用推荐的监视器来锁定.
这种方式是使用java流过滤和求和的最有效方法吗?
public static void main(String[] args){
int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).boxed().filter(e -> 35 < e).reduce(0,(a,b)->a+b);
}
Run Code Online (Sandbox Code Playgroud)
什么是更好的选择(如果有)以及为什么?