Tag: 数据结构

地图数据结构地图

MultiValueMap类(Apache commons集合)使得使用值为Collections的Map变得容易。 我正在寻找一个类,它可以很容易地使用Map,其键是对象,值是Maps。 我正在使用Java 1.4,因此无法使用Google Collections或generics。

使用广度优先搜索查找最短路径节点

我正在上面的图表上运行广度优先搜索,以找到从Node 0到Node 6的最短路径。 我的代码 public List shortestPathBFS(int startNode, int nodeToBeFound){ boolean shortestPathFound = false; Queue queue = new LinkedList(); Set visitedNodes = new HashSet(); List shortestPath = new ArrayList(); queue.add(startNode); shortestPath.add(startNode); while (!queue.isEmpty()) { int nextNode = queue.peek(); shortestPathFound = (nextNode == nodeToBeFound) ? true : false; if(shortestPathFound)break; visitedNodes.add(nextNode); System.out.println(queue); Integer unvisitedNode = this.getUnvisitedNode(nextNode, visitedNodes); […]

如何在TreeSet中找到元素的索引?

我正在使用TreeSet ,我非常想在集合中找到数字的索引。 有没有一种很好的方法来实际利用二叉树的O(log(n))复杂度? (如果不是,我该怎么做,有谁知道为什么不呢?我很好奇为什么这样的类会被包含在Java中,而不会像搜索函数那样。)

Hadoop gzip压缩文件

我是hadoop的新手,并试图处理维基百科转储。 它是一个6.7 GB的gzip压缩xml文件。 我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业上处理,因为只有一个映射器可以解压缩它。 这似乎对处理有限制。 还有其他选择吗? 比如将xml文件解压缩并拆分成多个块并用gzip重新压缩它们。 我从http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html上读到了关于hadoop gzip的内容。 谢谢你的帮助。

在Java中创建类似数据结构的结构

我是Java的新手,我正在尝试找到一种方法来存储信息,例如C中的结构。例如,我希望有一个程序雇佣员工。 它将从用户获取名字,姓氏和身份证号码并存储它。 然后,用户可以根据条件查看该信息(例如,如果数据库有超过1名员工)。 有人建议这样做的最好方法吗?

Java ConcurrentHashMap优于HashMap性能吗?

我刚刚阅读了“清洁代码”一书,并发现了这一说法: 当Java年轻的时候,Doug Lea写了一本开创性的书[8] Java中的Concurrent Programming。 随着本书的出现,他开发了几个线程安全的集合,后来成为java.util.concurrent包中JDK的一部分。 该软件包中的集合对于multithreading情况是安全的,并且它们表现良好。 实际上,几乎在所有情况下, ConcurrentHashMap实现都比HashMap表现更好 。 它还允许同时并发读取和写入,并且它具有支持常见复合操作的方法,否则这些操作不是线程安全的。 如果Java 5是部署环境,请从ConcurrentHashMap开始 请注意,在上面的引用中,我使用了“[n]”,其中n是某个数字,表示作者提供引用的地方,正如您所看到的,他没有为粗体部分提供任何参考。 并不是说我不相信这个陈述,但我很想知道这个陈述的支持证据。 那么,有没有人知道任何显示ConcurrentHashMap和HashMap的性能统计信息的资源? 或者任何人都可以向我解释为什么ConcurrentHashMap比HashMap快? 当我rest时,我可能会调查ConcurrentHashMap的工作实现,但是现在我想听听SOERS的回答。

不使用任何外部函数生成随机数

这是我最近参加的一次访谈中提出的问题。 据我所知,两个数字之间的随机数可以生成如下 public static int rand(int low, int high) { return low + (int)(Math.random() * (high – low + 1)); } 但是在这里我使用Math.random()来生成0到1之间的随机数,并使用它来帮助我在低和高之间生成。 有没有其他方法可以在不使用外部function的情况下直接进行?

使用Java中特殊字符之前的转义替换特殊字符

在我的java代码中,如果一个字符串输入有任何提到的特殊字符,那么前面应该有\\ 特殊字符集是{+, -, &&, ||, !, (, ), {, },[, ], ^, “”, ~, *, ?, :, \} 。 我尝试使用String.replaceAll(old,new)但令我惊讶的是它不起作用,即使我为’old’和’new’提供了正确的值。 if old=”:”,new=”\:” 我将特殊字符放在一个String数组中,在for循环中迭代它,检查它是否存在于字符串中,如果是,则input.replaceAll(“:”,”\\:”) 。 但它没有给我预期的输出。 请帮忙 String[] arr = { “+”, “-“, “&&”, “||”, “!”, “(“, “)”, “{“, “}”, “[“, “]”, “^”, “\””, “~”, “*”, “?”, “:”, “\\”, “AND”, “OR” }; for (int i = […]

Java:列表列表的笛卡尔积

我有一个问题,这是一个普通的编程问题,但我的实现是在Java中,所以我将以这种方式提供我的示例 我有一个这样的课: public class Foo { LinkedHashMap<String, Vector> dataStructure; public Foo(LinkedHashMap<String, Vector> dataStructure){ this.dataStructure = dataStructure; } public String[][] allUniqueCombinations(){ //this is what I need to do } } 我需要从LinkedHashMap生成一个嵌套数组,它表示LHM中所有值的每个唯一组合。 例如,如果我的LHM看起来像这样(伪代码,但我认为你可以得到这个想法……): {“foo” => [“1″,”2″,”3”], “bar” => [“3″,”2”], “baz” => [“5″,”6″,”7”]}; 那么我的String [] []应该是这样的: { {“foo”,”bar”,”baz”}, {“1″,”3″,”5”}, {“1″,”2″,”5”}, {“1″,”3″,”6”}, {“1″,”2″,”6”}, {“1″,”3″,”7”}, {“1″,”2″,”7”}, {“2″,”3″,”5”}, {“2″,”2″,”5”}, {“2″,”3″,”6”}, {“2″,”2″,”6”}, […]

单值映射Java的多个键

我认为我的问题与此类似: 如何使用多个键实现Map? 但有一个重要的区别。 在那个问题中(如果我对它的理解是正确的,请告诉我,如果不是),那些键应该始终是唯一的。 我希望在表单中有一个Map: MyMap ,其中键不一定是唯一的。 如果这没有意义,我基本上想要一个二维数组,但不是通过坐标引用元素,我想通过成对的对象来引用它们。 任何人都对这个有效的图书馆或自己实施的好方法有任何想法吗? 就图书馆而言,我看过Apache Commons和Guava,似乎都没有我想要的东西。