Tag:

java.util.Set中的重复元素

java.util.Set实现删除重复的元素。 如何在java.util.Set内部删除重复元素?

在TreeSet中,基于不同属性的自定义对象的排序和唯一性

以下是我的学生class class Student implements Comparable { String name; int rollNo; @Override public int compareTo(Object obj) { return ((Student)obj).name.compareTo(this.name); } } 最新修改:但仍然没有得到正确的结果 @Override public int compareTo(Object obj) { Student s = (Student) obj; if (name.equals(s.name)) { // achieving uniqueness return 0; } else { if (rollNo s.rollNo) { return 1; } else { // this makes […]

Java中的function数据结构

Java标准库是否具有function更新的任何function数据结构,如不可变集,列表等?

HashSet vs TreeSet vs LinkedHashSet基于添加重复值

我正在学习核心java的核心,即Collections 。我想知道当我们在HashSet , TreeSet , LinkedHashSet添加重复元素时,内部会发生什么。 天气条目被替换,忽略或抛出exception并且程序终止 。 一个子问题是, 哪一个操作具有相同或平均时间复杂度 非常感谢您的回复。

如何在java中创建一组数组?

由于数组中的equals函数仅检查实例,因此它与Set不兼容。 因此,我想知道如何在java中创建一组数组? 一种可能的方法是将每个数组放在一个对象中,并为该类实现equals函数,但这会降低性能吗?

如果我们只覆盖类中的hashCode()并在Set中使用它会发生什么?

这可能不是现实世界的场景,但只是想知道发生了什么,下面是代码。 我正在创建一组UsingSet类的对象。 根据Java中的哈希概念,当我第一次添加包含“a”的对象时,它将创建一个带有哈希码97的桶并将对象放入其中。 当它遇到一个带有“a”的对象时,它会在UsingSet类中调用重写的hashcode方法,它将获得hashcode 97,那么下一步是什么? 由于我没有覆盖equals方法,默认实现将返回false。 那么具有值“a”的Object将保留在哪个存储区中的前一个对象保存的同一个存储区中? 还是会创造新的桶? 有谁知道它将如何存储在内部? /* package whatever; // don’t place package name! */ import java.util.*; import java.lang.*; import java.io.*; class UsingSet { String value; public UsingSet(String value){ this.value = value; } public String toString() { return value; } public int hashCode() { int hash = value.hashCode(); System.out.println(“hashcode called” + hash); […]

在Set toArray()方法中需要新的String

我正在尝试将Set转换为数组。 Set s = new HashSet(Arrays.asList(“mango”,”guava”,”apple”)); String[] a = s.toArray(new String[0]); for(String x:a) System.out.println(x); 它工作正常。 但我不明白String[] a = s.toArray(new String[0]); 。 我的意思是最初我在尝试String[] a = c.toArray(); ,但它不工作。 为什么需要new String[0] 。

与顺序无关的哈希算法

我目前正在为自定义编程语言开发一个集合库。 我已经有了几种数据类型(Collection,List,Map,Set)和它们的实现(可变和不可变),但到目前为止我所缺少的是hashCode和equals 。 虽然列表没有问题,因为它们是有序集合,但它们对集合和地图起着特殊的作用。 如果两个集合具有相同的大小和相同的元素,则它们被认为是相等的,并且集合维护它们的顺序不应该在它们的相等性上有所不同。 由于equals-hashCode-contract, hashCode实现也必须反映这种行为,这意味着具有相同元素但排序不同的两个集应该具有相同的哈希码。 (这同样适用于地图,这在技术上是一组键值对) 示例 (伪代码): let set1: Set = [ “a”, “b”, “c” ] let set2: Set = [ “b”, “c”, “a” ] set1 == set2 // should return true set1.hashCode == set2.hashCode // should also return true 我如何实现一个相当好的哈希算法,上面例子中的hashCode s返回相同的值?

Java中是否存在定向非循环图(DAG)数据类型,我应该使用它吗?

我正在用Java建模一个电源子系统。 一个简单的SQLite数据库包含一组线路可替换单元(LRU)以及它们之间的连接。 我正在编写一个Power Model API来简化数据存储的查询,使用DDD模式和存储库。 我正在寻找一个合适的Java集合来建模查询结果。 LRU连接流中有一些特殊情况需要建模: 最初,有一个带有多个端口(<= 16)的配电单元(PDU),为下游LRU供电。 功率流中的典型连接涉及功率源的单个源LRU和功率耗尽的单个Sink LRU。 然而,下游可能存在连接到多个宿LRU的单个源LRU。 电源流中没有循环。 包含上面的#3使我开始考虑从API返回查询结果作为树。 但是我在java.util中找到的唯一一棵树是一个TreeMap键值配对的红黑树,这似乎不合适(或者我想不出用它来建模电源流的适当抽象。)I我也一直在考虑使用LinkedHashSet ,但我不相信它也适合。 我不清楚这个结构中的节点如何指向下游节点。 在这一点上,我并不关心时间和空间的效率。 我的API必须通过向外部客户端(即基于Java的电源监视和控制应用程序的表示层)提供电源连接信息来工作。对开源数据类型/库的使用也没有限制。 在一般的计算机科学术语中,我真正寻求的是有向无环图(DAG)。 是否有针对Java的实现? 我是否认为DAG适合我的情况?

属性文件,其中列表作为单个键的值

对于我的程序,我想从属性文件和键的相关值列表中读取一个键。 最近我这样做了 public static Map<String,List>categoryMap = new Hashtable<String, List>(); Properties prop = new Properties(); try { prop2.load(new FileInputStream(/displayCategerization.properties)); Set keys = prop.keySet(); List categoryList = new ArrayList(); for (Object key : keys) { categoryList.add((String)prop2.get(key)); LogDisplayService.categoryMap.put((String)key,categoryList); } System.out.println(categoryList); System.out.println(“Category Map :”+LogDisplayService.categoryMap); keys = null; prop = null; } catch (Throwable e) { e.printStackTrace(); } 和我的属性文件如下 – […]