我没有长时间使用java,所以我不确定还有什么要寻找的.我希望有人可以指出我正确的方向.
目标: 我想使用查找表,存储为文本文件.但我不想使用绝对路径,因为最后我想打包一个版本并能够从任何位置调用它(文本文件将包含在打包版本中).
当前设置: 我将文本文件放在一个名为"resources"的文件夹中(因为从阅读有关java的教程,我得到了印象,这是我应该把它用来维护一个更好的结构化项目).
在根包文件夹中,我有一个类(MainClass.java),它在子包中调用另一个类(LookUpClass.java).文件夹设置如下:
我写了一个方法LookUpClass.java,就是从资源中的查找表中检索某一行.为了检索文件并读出某一行,我用了
// Gets respective line from LUT
private static String getLineFromLUT(int line) {
URL url = LookUpClass.class.getClass().getResource("/LookUpTables/LookUpTable1.txt");
File file = new File(url.toURI());
BufferedReader br = new BufferedReader(new FileReader(file));
for (int i = 0; i < line; ++i)
br.readLine();
return br.readLine;
}
Run Code Online (Sandbox Code Playgroud)
在我的项目结构中,"java"文件夹被标记为"source",而"resources"被标记为"resources".
我的测试设置非常简单:
public static void main(String[] args) throws URISyntaxException, IOException {
String c = LookUpClass.getLineFromLUT(5);
System.out.println("Color of line 5: " …Run Code Online (Sandbox Code Playgroud) tldr:如何同时在多个(只读)Java HashMaps中搜索条目?
长版:
我有几个不同大小的字典存储为HashMap< String, String >.一旦他们被读入,他们永远不会被改变(严格只读).我想检查是否以及哪个字典用我的密钥存储了一个条目.
我的代码最初正在寻找这样的密钥:
public DictionaryEntry getEntry(String key) {
for (int i = 0; i < _numDictionaries; i++) {
HashMap<String, String> map = getDictionary(i);
if (map.containsKey(key))
return new DictionaryEntry(map.get(key), i);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
然后它变得有点复杂:我的搜索字符串可能包含拼写错误,或者是存储条目的变体.就像,如果存储的密钥是"香蕉",我可能会查找"bannana"或"香蕉",但仍然希望"banana"的条目返回.使用Levenshtein-Distance,我现在遍历所有词典及其中的每个条目:
public DictionaryEntry getEntry(String key) {
for (int i = 0; i < _numDictionaries; i++) {
HashMap<String, String> map = getDictionary(i);
for (Map.Entry entry : map.entrySet) {
// Calculate Levenshtein distance, store closest match etc.
}
}
// return closest …Run Code Online (Sandbox Code Playgroud) 太棒了;我正在努力构造一个查询
详细描述
我嵌入了带有数组的文档,其结构如下:
{
"_id" : ObjectId("0123456789"),
"type" : "some_object",
"relationships" : {
"x" : [ ObjectId("0123456789") ],
"y" : [ ObjectId("0123456789") ],
},
"properties" : [
{
"a" : "1"
},
{
"b" : "1"
},
{
"original_text_source" : "foo.txt"
},
]
}
Run Code Online (Sandbox Code Playgroud)
这些文档是由 10k 文本文件创建的,这些文本文件排序在不同的文件夹中。在将文档插入 MongoDB(批量)期间,我弄乱了一些文件,导致一个文件被导入两次(我的数据库有 10001 个文档),但显然我不知道它是哪一个。由于“original_text_source”值之一的计数必须为 2,因此我打算只删除一个。
我阅读了 的解决方案$elemMatch,但由于我的数组元素是一个文档,我不确定如何继续。也许与mapReduce?但我无法将逻辑转移到我的文档结构中。
我也可以创建一个新集合并重新上传所有集合,但以防万一我再次搞砸,我宁愿学习如何查询重复项。看起来更优雅:-)
我有一个合成数据集,其中包含 1000 个不同阶次的噪声多边形和正弦/余弦曲线,我可以使用 python seaborn 将其绘制为线。
由于我有很多重叠的线,我想绘制我的折线图的某种热图或直方图。我尝试遍历列并聚合计数以使用 seaborn 的热图图,但是对于许多行,这需要很长时间。
导致我想要的下一个最好的结果是 hexbin 图(带有 seaborn 关节图)。
但它是运行时和粒度之间的折衷(显示的图形的网格大小为 750)。我找不到任何其他图形类型来解决我的问题。但我也不知道它到底叫什么。
我也试过将线 alpha 设置为 0.2。这会产生与我想要的类似的图表。但它不太精确(如果超过 5 条线在同一点重叠,我已经剩下零透明度)。此外,它错过了热图的典型着色。
(没有实际意义的搜索词是:热图、二维线直方图、线直方图、密度图……)
有没有人知道可以更有效和高质量地绘制这个的包,或者知道如何使用流行的 python 绘图仪(即 matplotlib 系列:matplotlib、seaborn、bokeh)进行绘制。不过我对任何包裹都很好。
我正在尝试使用 SceneBuilder 使用 JavaFX 构建一个简单的 GUI,其中我使用 MenuItem (in Main.fxml) 来选择一个根文件夹。然后,该文件夹的内容将在 TextArea 中列出,该文本区域再次包装在 TabPane(FileListTab.fxml,包含在 中的嵌套 FXML Main.fxml)中。
我使用这篇文章作为开始习惯 MVC 的起点。不幸的是,我不知道如何让我的嵌套 FXML 侦听或绑定到外部 FXML,因为我没有明确调用它。现在我只能在标签中显示我选择的文件夹。
我现在的最小工作代码如下所示:
主文件
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" onAction="#browseInputFolder" text="Open folder" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="File listing">
<content>
<fx:include fx:id="analysisTab" source="FileListTab.fxml" …Run Code Online (Sandbox Code Playgroud)