我使用以下代码创建并填充GuavaTable:
Table<String, String, Integer> table = HashBasedTable.create();
table.put("A", "B", 1);
table.put("A", "C", 2);
table.put("B", "D", 3);
Run Code Online (Sandbox Code Playgroud)
我想知道如何迭代表并打印每行的键和值?所以,期望的输出是:
A B 1
A C 2
B D 3
Run Code Online (Sandbox Code Playgroud) Java中的对象的实例变量是存储在JVM的堆栈或方法区域中的吗?
另外,我们为多个线程设置了不同的实例变量吗?
如果它存储在方法区域中,实例变量与静态变量存储的不同之处是什么?
假设我有一个文本文件'demo.txt',其中包含一个表格,如下所示:
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
现在,我想在bash中使用'readarray'命令分别读取每一行,所以我写道:
readarray myarray < demo.txt
Run Code Online (Sandbox Code Playgroud)
问题是它不起作用.如果我尝试打印'myarray':
echo $myarray
Run Code Online (Sandbox Code Playgroud)
我明白了:
1 2 3
Run Code Online (Sandbox Code Playgroud)
另外,如果我写:
echo ${myarray[1]}
Run Code Online (Sandbox Code Playgroud)
我明白了:
4 5 6
Run Code Online (Sandbox Code Playgroud)
代替:
2
Run Code Online (Sandbox Code Playgroud)
正如我所料.这是为什么?如何分别访问每一行并在该行中访问每个成员?
正如这里所讨论的,当在Vista中调整Swing应用程序的大小(和Windows 7,这就是我正在使用的)时,右下角会出现黑色背景,而Swing的重绘会赶上更改.
使用其他应用程序(Windows资源管理器(本机),Firefox(C++?)和Eclipse(Java))我注意到它们都有同样的问题 - 与上面链接中的人说的相反 - 但它们通过以下方式将问题最小化具有灰色填充颜色,与Swing中出现的黑色相比,其视觉震撼性要小得多.
我想知道是否有一些方法可以改变这一点,以便Swing的行为与其他应用程序一样?我尝试设置JFrame的背景颜色,但无济于事.
其他信息 乔纳斯发现(见下面的信息性答案)这是JFrames的一个问题,但不是AWT框架 - 也许这会帮助有人解决这个问题.
我是java的新手,通过创建一个简单的NaiveBayes分类器来练习.我仍然是对象实例化的新手,并想知道如何初始化HashMaps的HashMap.在将新观察值插入分类器时,我可以为给定类中的未见特征名创建新的HashMap,但是我是否需要初始化?
import java.util.HashMap;
public class NaiveBayes {
private HashMap<String, Integer> class_counts;
private HashMap<String, HashMap<String, Integer>> class_feature_counts;
public NaiveBayes() {
class_counts = new HashMap<String, Integer>();
// do I need to initialize class_feature_counts?
}
public void insert() {
// todo
// I think I can create new hashmaps on the fly here for class_feature_counts
}
public String classify() {
// stub
return "";
}
// Naive Scoring:
// p( c | f_1, ... f_n) =~ p(c) * p(f_1|c) ... * p(f_n|c)
private …Run Code Online (Sandbox Code Playgroud) 我们如何有效地生成k随机和非连续样本[1,...,N]?
非期望的示例(N=10, k=4):
2,3,8,10
这不是一个理想的例子,因为2它3是连续的.
期望的例子(N=10, k=4):
2,6,8,10
这是一个很好的例子,因为每对样本之间的差异大于 1
假设您想要流式迭代器的元素; 让我们使用一个具体的例子Scanner来实现Iterator<String>.
给出一个Iterator,说:
// Scanner implements Iterator<String>
Iterator<String> scanner = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)
从中创建的选项Stream<String>很笨重:
StreamSupport.stream(
Spliterators.spliteratorUnknownSize(scanner, Spliterator.ORDERED), false);
Run Code Online (Sandbox Code Playgroud)
或稍微简洁,但迟钝:
StreamSupport.stream(
((Iterable<String>) () -> new Scanner(System.in)).spliterator(), false);
Run Code Online (Sandbox Code Playgroud)
在JDK中的某个地方是否有一个返回Stream<T>给定的工厂方法Iterator<T>?
在过去的几分钟里,我一直在为自己辩论,而且我看到了是和否的原因.这源于查看Java HashMap与Hashtable的答案,并看到有几个人说Hashtable实际上更慢.
在我看来,如果在单个线程中运行,同步方法应该与其非同步方法完全没有区别,因为同步操作不应该阻塞任何内容.也就是说,我认为编译器会以不同的方式处理这两种情况,这就是人们说同步速度较慢的原因.
并不是说它无论如何都是决定性的,但是我对HashMap和Hashtable进行了一些简单的测试,并且看到了速度上的差别.
我在创建Java目录的符号链接时遇到了麻烦.我正在使用Files类中的createSymbolicLink()方法:http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
绝对路径:
/some/path/target /some/path/xxx/linkname我希望,在目录的链接/some/path/xxx/中创建的文件夹/some/path/target,而是从一个链接/some/path/xxx/linkname到/some/path/xxx/target被创建.我只是无法弄清楚我做错了什么.
当我从中创建链接/some/path/linkname时/some/path/target,一切都按预期工作.
任何帮助是极大的赞赏.
编辑:这是我的代码:
Path records = Paths.get(Properties.getProperty("records.path"));
Path recordsLink = Paths.get(Properties.getProperty("webserver.root") + System.getProperty("file.separator") + records.getFileName());
try {
Files.createSymbolicLink(recordsLink, records);
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
"records.path"和"webserver.root"都是相对路径.
实际上我刚刚找到了问题的解决方案:如果我这样做,它会起作用:
records = records.toAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
我假设createSymbolicLink()将使用绝对路径来创建链接,这是错误的.
我遇到了Eclipse运行配置的特殊行为,它似乎只是一个Windows问题.假设我有一个Java应用程序打印出命令行参数,如下所示:
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用可以由shell扩展的外卡提供参数,shell将展开它并将其提供给Java程序.这并不奇怪.所以,如果我在命令提示符下做
java WildCard test/*
Run Code Online (Sandbox Code Playgroud)
该程序将打印
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
其中foo.txt和bar.txt是目录"test"中的文件.
如果我用引号括起通配符参数,可以防止Shell扩展;*nix上的单引号,以及Windows上的双引号.所以对于Windows,如果我在命令提示符下执行以下操作:
java WildCard "test/*"
Run Code Online (Sandbox Code Playgroud)
该程序现在将打印
test/*
Run Code Online (Sandbox Code Playgroud)
(没有扩张).
但是,我发现Eclipse运行启动器中的引用似乎没有效果,并且参数仍在扩展.如果我放
"test/*"
Run Code Online (Sandbox Code Playgroud)
在Eclipse运行启动程序的程序参数部分,并运行上面的类,我仍然得到
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
换句话说,当程序实际运行时,双引号似乎丢失了.这似乎只发生在Windows上.
有没有办法在Windows上使用Eclipse运行启动器阻止glob扩展?