Tag: 集合

SynchronizedMap类中重载构造函数的用途

在Collections类中, SynchronizedMap类有两个构造函数。 一个只使用一个map实例,另一个只使用map和mutex 。 SynchronizedMap(Map m) { this.m = Objects.requireNonNull(m); mutex = this; } SynchronizedMap(Map m, Object mutex) { this.m = m; this.mutex = mutex; } 但是,SynchronizedMap类是一个私有静态类,只能使用提供的包装器方法来访问它: public static Map synchronizedMap(Map m) { return new SynchronizedMap(m); } 从这个链接可以理解,第二个构造函数的想法是使用mutex用户提供的mutex 。 现在,由于包装器方法是获取SynchronizedMap实例(只接受一个map对象)的唯一方法,因此第二个重载构造函数的目的是什么?

提高Cassandra和Java集合的性能

我们在项目中使用NoSQL(Cassandra)。 我们有一个表A(5000条记录),这是一个主表。 我们有另一张表B(2000条记录)。 表B有4列,表A有25列。 我们公开了一个REST服务来获取B的所有记录; 喜欢/ service / getB。 此服务将返回6列作为响应 – { “result”: [ { “col1FromB”: “1B”, “col2FromB”: “2B”, “col3FromB”: “3B”, “col4FromB”: “4B”, “col1FromA”: “1A”, “col2FromA”: “2A” }, { “col1FromB”: “11B”, “col2FromB”: “12B”, “col3FromB”: “13B”, “col4FromB”: “14B”, “col1FromA”: “11A”, “col2FromA”: “12A” } ] } 因此,对于表B中的每个项目,都会查询表A.这就是我这样做的方式 – //Get all from Table B (took 90 ms in […]

矩阵操作:逻辑无法获取更高阶NXN矩阵数据的正确答案

我遇到了与Matrix Manipulation相关的问题。 问题陈述 有一个NxN矩阵,分为N * N个单元。 每个单元格都有一个预定义值。 哪个将作为输入。 迭代必须发生K次,这也在测试输入中给出。 我们必须确保在每次迭代时选择行/列的最佳/最小值。 最终输出是每次迭代结束时保存的最佳值的累积和。 步骤1.总结单个行和列,找到行和列的最小总和(它可以是行或列,只需要最小行或列) 步骤2.分别存储上面找到的总和 第3步。增加min的元素。 总和行或列。 由1 从1到Kth值重复步骤1,2,3 add the sum at each iteration(specified in step2) 输出是在第K次迭代上获得的总和。 样本数据 2 4 1 3 2 4 输出数据 22 我能够编写一个代码(在java中)并对一些示例测试用例进行了相同的测试。 输出工作正常。 该代码适用于较低阶的样本数据矩阵,例如2×2,4×4,甚至直到44×40(迭代次数较少)。 但是,当矩阵大小增加到100X100(复杂迭代)时,我看到预期的输出输出值在实际输出及其随机的10s和数百位数处不同。 因为我无法找到输出与输入的正确模式。 现在,真正调试第500个循环来识别问题对我造成了影响。 有没有更好的方法或方法来解决与巨大的矩阵操作相关的问题。 有没有人遇到类似的问题并解决了它。 我主要想知道解决给定矩阵问题的正确方法。 在java中使用什么数据结构。 目前,我使用原始DS和数组int []或long []来解决这个问题。 感谢这方面的任何帮助。

HashMap和垃圾收集:我需要在变量重新赋值之前调用clear()吗?

也许这是一个愚蠢的问题,但我不确定垃圾收集过程。 考虑以下代码: private HashMap configuration = new HashMap(); … //add some items to configuration … //now get another configuration HashMap parameters = new HashMap(); for (String parameterName : configurationParameterNameList) { parameters.put(parameterName, reader.readParameter(parameterName)); } //and reassign the variable this.configuration.clear(); this.configuration = parameters; 在重新分配之前,我是否需要调用configuration.clear() ? Parameter类里面只包含几个String变量。

Java 8 Stream – 查找最大的嵌套列表

我有一个Collection<List> values 如何使用Streams找到包含最大列表的集合? 我尝试过类似的东西,但它并不常用 values.stream().max(e -> e.stream().max(List::size).get()).get() 但是我得到了编译错误。 有任何想法吗?

如何在jtable行中为多个值插入jcombobox

Hashmap包含键和值(解析XML的结果)。 Hashmap包含键是字符串的方式,值是向量。 键可以在向量中具有单个值,也可以在向量中具有多个值。 这个hashmap必须放入jtable中,这样如果键有单个值,就把它放到文本框中。 如果它有多个值,则在表格中插入一个combobox。 您可以更改代码。 hashmap.put(nodeList.item(j).getNodeName(), nodeValueList); Set keys = PropertyIMPL.hashmap.keySet(); Iterator iteratorKeys = keys.iterator(); while (iteratorKeys.hasNext()) { String key = (String) iteratorKeys.next(); if (nodeValueList.size() > 1) { tablemodel.insertRow(0, new Object[]{key}); String[] ss = (String[]) nodeValueList.toArray( new String[nodeValueList.size()]); TableColumn col = table.getColumnModel().getColumn(1); col.setCellEditor(new MyComboBoxEditor(ss)); } else { tablemodel.insertRow(0, new Object[]{key, nodeValueList}); } } keys.clear();

排序列表时Android忽略大小写

我有一个List命名路径我正在使用以下代码对字符串进行排序 java.util.Collections.sort(path); 这工作正常,它排序我的列表,但它以不同的方式处理第一个字母的情况,它用大写字母对列表进行排序,然后用小写字母对列表进行排序,如果我有以下猫狗Bird Zebra它会像它一样排序 Bird Zebra dog cat 所以我如何忽略案例,以便狗和猫在斑马之前但在鸟之后? 感谢您的任何帮助

Lambda填充地图

我试图用一个单词和它们的出现次数来填充地图。 我正在尝试写一个lambda来做它,就像这样: Consumer wordCount = word -> map.computeIfAbsent(word, (w) -> (new Integer(1) + 1).intValue()); map是Map 。 如果它不存在,它应该只是将地图中的单词作为键插入,如果它存在,它应该将其整数值增加1.这个语法不正确。

将hashmap拆分为java 8中的分区

我有hashmap: Map<String, Set> myMap 我想将它拆分为包含Map列表: List<Map<String,Set>> listofMaps; ,每张地图最多100个键。 我知道如何以常规的方式做到这一点..(关于入口集的foreach,每100个项目创建新的地图)。 有没有选择用java 8 lambda做什么? (像Lists.partitions() ..)?

Java 8 – Streams嵌套ForEach与不同的Collection

我尝试理解新的Java 8 Streams,并且我尝试了几天将嵌套的foreach循环转移到Java 8 Streams中的集合上。 是否有可能重构以下嵌套的foreach循环,包括Java-8-Streams中的if-conditions? 如果是的话会是什么样子。 ArrayList Inq = new ArrayList(); TreeMap Quotations = new TreeMap(); ArrayList tempInqAndQuot = new ArrayList(); ArrayList tempQuotPos = new ArrayList(); for (ClassInq simInq : this.Inq){ if (!simInq.isClosed() && !simInq.isDenied()){ for (Map.Entry Quot: Quotations.entrySet()){ SalesQuot sapQuot = Quot.getValue(); if (sapQuot.getInquiryDocumentNumber().compareTo(simInq.getSapInquiryNumber()) == 0){ simInq.setSAPQuotationNumber(sapQuot.getQuotationDocumentNumber()); tempInqAndQuot.add(simInq); for (Map.Entry quotp : sapQuot.getPosition().entrySet()){ […]