草庐IT

具有高效增删改查的Java数据结构

我需要一个可以高效地添加、删除和访问随机对象的Java数据结构。这是行不通的:ArrayList具有高效的添加(恒定时间)和随机访问(只是使用随机整数“获取”),但删除可能需要线性时间,因为它可能需要在整个列表中搜索它。TreeSet或HashSet具有高效的添加和删除,但我不知道如何获取随机对象。有什么想法吗?理论上,如果我可以自己用随机的左或右遍历树,B树就可以工作,但我认为标准的Java类没有给我这种能力。如果标准Java类中的任何内容都不起作用,我愿意使用第三方库。我不需要支持重复项或空值,也不需要线程安全。谢谢。 最佳答案

java - 字符串驻留的搜索成本和文字字符串的声明

两个问题。当我们声明文字字符串时,我们会在堆的字符串池中搜索是否有相同的字符串。这也是实习(String类的methodintern)吗?在我看来,每个文字字符串声明都需要二进制搜索或其他东西,因此当n是现有字符串的数量时,它至少需要log(n)在游泳池。而且如果池中的字符串很多,可能成本会很高。(也许是搜索成本和内存的权衡?)从这个角度来看,声明mant文字字符串可能是危险的。这种搜索成本有多重要,为什么java要这样设计(声明文字字符串时搜索池)。以下是我所说的理解背景。JavaDocforthejava.lang.Stringclass状态:Stringsareconstant;

java - Spring Data Elastic Search - 按距离对地理位置进行排序

给定一个地理定位点,我试图找到10公里以内的一些地点,并按离给定位置最近的地点对其进行排序。我设法返回了10公里以内的位置列表,但是当我尝试对其进行排序时,出现了异常:我正在使用以下版本:3.2.12.61.0.0.BUILD-SNAPSHOT3.2.5.RELEASEjava代码如下:publicListfindByGeoLocation(Doublelongitude,Doublelatitude,StringchannelKey,Stringdistance){if(StringUtils.isEmpty(distance)){distance=defaultRadius;}Ge

java - Java中的多关键字搜索

我有一个基于Java的应用程序和一个MySQL数据库中的一组关键字(总共约3M个关键字,每个关键字可能包含多个单词,例如可以是:“memory”,“oldhouse”,“欧盟法律”等)。用户通过上传包含任意文本的文档(大多数时候是几页)与应用程序交互。我想做的是搜索文档中300万个关键字中是否出现以及在何处出现。我曾尝试使用循环并在文档中搜索每个关键字,但这根本没有效率。我想知道是否有一个库可以以更省时的方式执行搜索。如果有任何帮助,我将不胜感激。 最佳答案 项目ApacheLucene可能会有帮助。ApacheLuceneTMis

java - 如何在 Java 中使用 String 或 StringBuilder 倒序搜索?

你能告诉我如何在Java中反向搜索(向后搜索)吗?我需要做同样的事情来在HTML文件中搜索文本。 最佳答案 [...]howtosearchinreveresorder(backwardsearch)injava?我假设您的意思是从末尾开始搜索字符串。对于此任务,您可以使用String.lastIndexOf(str).这将找到子字符串str的last索引。如果您想从该点继续搜索,可以添加第二个fromIndex参数。StringBuilder存在完全相同的方法 关于java-如何在Ja

java - 广度优先搜索 - Java

我的学校练习是用Java实现广度优先搜索。我已经实现了几乎所有的东西,但问题是我的搜索不起作用,我找不到问题:(所以我想请你给我一些建议,并给我一些关于最终问题可能出在哪里的指导。publicArrayListsearch(Problemp){//ThefrontierisaqueueofexpandedSearchNodesnotprocessedyetfrontier=newNodeQueue();///Theexploredsetisasetofnodesthathavebeenprocessedexplored=newHashSet();//Thestartstateisgiv

java - 为什么 Elastic Search java API 会忽略我们的查询限制?

我正在使用这段代码:client.prepareSearch("test").addSort("dateUpdated",SortOrder.DESC).setSearchType(SearchType.DFS_QUERY_AND_FETCH).setIndices("reach").setTypes(types).setQuery(QueryBuilders.queryString(queryString)).setFrom(0).setSize(2).setExplain(true).execute().actionGet()客户端是远程客户端。总共有5个结果,根据我上面的内容,我

java - ElasticSearch 一个 edgeNGram for autocomplete\typeahead, is my search_analyzer being ignored

我有三个带有“用户名”字段的文档:'布里安迪利''briangumble''briangriffen'当我搜索“brian”时,我按预期得到了所有三个,但是当我搜索“briandilley”时,我仍然得到了所有三个。analyzeAPI告诉我它在我的搜索字符串上使用了ngram过滤器,但我不确定为什么。这是我的设置:索引设置:{"analysis":{"analyzer":{"username_index":{"tokenizer":"keyword","filter":["lowercase","username_ngram"]},"username_search":{"tokeni

java - 搜索文本文件并在 JPanel 中显示结果

有没有人知道如何搜索文本文件并在JComponent(如JPanel)中列出结果。两天来我一直在努力解决这个问题,但如果没有成功,我将不胜感激。非常感谢。我一直在尝试编写一个类来处理对文本文件的搜索查询。我的主要目标是获取包含在JTextField中输入的搜索关键字的文本文件中的行,并将它们打印在适当的JComponent(类似于JTextField、JTextPane,以最适用的为准)中。我希望搜索结果显示在列中,就像google搜索结果的显示方式一样,以便文本文件中的每一行都打印在自己的行中。有人告诉我最好使用ArrayList。我真的不知道该怎么做。我从各地收集了一些想法,这就是

java - 在 Eclipse 中搜索代码行

我正在Eclipse(java)中开发代码。在调试代码时,我使用了很多System.out.println(...)。现在我需要删除所有这些行。为此,我在Search->Java中编写了System.out.println,但它没有提供任何搜索结果。那么,我怎样才能找到这个字符串System.out.println的所有出现? 最佳答案 搜索->文件。输入“System.out.println”,在“*.java”(不带引号)中选择要查找的文件类型“Java搜索”有所不同。它不允许您在java文件中查找内容,但可以查找方法/声明/等