import java.util.*;
public class Main {
public static void main(String[] args) {
int size = 3;
String[] array = new String[size];
Arrays.fill(array, "");
for(int i = 0; i <= 100; ) {
array[i++%size] += i + " ";
}
for(String element: array) {
System.out.println(element);
}
}
}
Run Code Online (Sandbox Code Playgroud)
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 …
Run Code Online (Sandbox Code Playgroud) 我想dict
在python中制作一个深层副本.不幸的是,该.deepcopy()
方法不存在dict
.我怎么做?
>>> my_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> my_copy = my_dict.deepcopy()
Traceback (most recent calll last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'deepcopy'
>>> my_copy = my_dict.copy()
>>> my_dict['a'][2] = 7
>>> my_copy['a'][2]
7
Run Code Online (Sandbox Code Playgroud)
最后一行应该是3
.
我希望这些修改my_dict
不会影响快照my_copy
.
我怎么做?该解决方案应与Python 3.x兼容.
打印应用程序的"用法"时,是应该在stdout还是stderr上完成?
根据应用程序,我看过几个案例,但似乎没有一个规则.也许我错了,有一个很好的做法.在那种情况下,它是什么?
我正在构建一个包含大约一百个常量的Python模块.
当人们导入我的模块时,我想避免命名问题,所以我想知道最好的方法是什么.
MY_CONSTANT = 1
MY_SECOND_CONSTANT = 2
...
MY2_CONSTANT = "a"
MY2_SECOND_CONSTANT = "b"
...
Run Code Online (Sandbox Code Playgroud)
要么
class My:
CONSTANT = 1
SECOND_CONSTANT = 2
...
class My2
CONSTANT = "a"
SECOND_CONSTANT = "b"
...
Run Code Online (Sandbox Code Playgroud)
或许你的另一个建议?
来自Java,我当然更喜欢第二种方式,但有些人可能会觉得它有点过分......
我想有一个c.g.c.c.Multimap
仅基于键排序的.不应对值进行排序.我试图用番石榴来构建一些东西TreeMultimap
,但我不能使用它,因为值类型没有实现Comparable
.
public class MyObject /* doesn't implement Comparable */ {
private String name;
private int score;
// Getters/setters are implemented
public static Function<MyObject,Integer> myObjectToScore {
@Override public Integer apply (MyObject o) { return o.score; }
}
public static Multimap<Integer,MyObject> indexOnScore(Iterable<MyObject> i) {
Multimap<Integer,MyObject> m = Multimaps.index(i, myObjectToScore());
// Do the sort of the keys.
return m;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经考虑过获取一些SortedSet
密钥,然后迭代排序集中的每个密钥以获取各种值,但我希望在Guava中使用现有的(但尚未发现的)功能而不是使用这种黑客.
注意:我不会制作MyObject
工具,Comparable
因为它对我的实际对象毫无意义.
输入/输出示例:
Set<MyObject> s = Sets.newHashSet(
new …
Run Code Online (Sandbox Code Playgroud) 甲.class
文件是一个相当有据可查的格式定义部分和大小,因此,最大尺寸为好.
例如,一个.class
文件包含一个幻数(4个字节),一个版本(4个字节),一个常量池(可变大小)等.但是可以在几个级别定义大小:你可以有65535个方法,每个方法仅限于65535个字节.
其他限制是什么?并且,如果你想使最大的.class
文件成为可能,它的大小是多少?
如果需要,限制Java的答案.这意味着如果Scala或Clojure(或......)改变了某些限制,则忽略这些值.
最近我在很少的项目中看到很多代码使用流来过滤对象,比如:
library.stream()
.map(book -> book.getAuthor())
.filter(author -> author.getAge() >= 50)
.map(Author::getSurname)
.map(String::toUpperCase)
.distinct()
.limit(15)
.collect(toList()));
Run Code Online (Sandbox Code Playgroud)
使用它而不是直接HQL/SQL查询到数据库返回已经过滤的结果是否有任何好处.
第二种方法不是更快吗?
在不存在Optional的情况下,我一直在写特定的例外投掷者.
例如:
Optional<?> optional = ...;
if (!optional.isPresent()) {
throw new MyException();
}
Object result = optional.get();
Run Code Online (Sandbox Code Playgroud)
我发现这段代码不是很流畅,特别是使用了爆炸(!).我更喜欢写一些类似的东西:
Optional<?> optional = ...;
Object result = optional.orThrow(MyException.class);
Run Code Online (Sandbox Code Playgroud)
我还没有找到番石榴这样的捷径吗?
我有一个带有Java 1.7的CentOS 6虚拟机.
$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.4.1.el6_5-x86_64 u51-b02)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
$ javac -version
javac 1.7.0_51
Run Code Online (Sandbox Code Playgroud)
我需要使用Java 1.6而不是Java 1.7,所以我安装了它.
$ sudo yum install java-1.6.0-openjdk.x86_64
$ sudo yum install java-1.6.0-openjdk-devel.x86_64
Run Code Online (Sandbox Code Playgroud)
当我再次检查版本时,我会像以前一样.对于其他项目,我将需要Java 1.7,所以我想保留它.
现在我想配置我的虚拟机,以便默认的JDK 和默认的JRE都是1.6.我怎么做?另外,当我完成它后,如何切换回Java 1.7?
我刚刚在Eclipse上安装了插件m2e.
我写了一个简单的JUnit(版本4)测试.我可以从Eclipse运行它,但不能从pom.xml运行它(alt-click,Run as,Maven Test).我想我需要告诉Maven搜索那个课程,但我不知道怎么做.
另外,我在groupId"junit"中找不到JUnit 4:只有版本3.8.1可用.我真的需要为版本3.x而不是版本4+编写测试吗?
如何解决这个问题?
把我想象成Maven的新手:这就是我的本意.因此,除非准确描述我需要做什么,否则请不要谈论工件技术.我几乎无法安装Guava作为依赖,现在我完全失去了这些概念.
谢谢!