最近在做算法题的时候发现同样是使用 HashSet,Java 的解法有效但是 c# 的解法就是错的。问题就出在 List 类型的 HashCode 的计算上。我们来看下面的 Java 和 C# 代码的输出结果:
Java 使用 HashSet 存储 int[] 以及 ArrayList:
public class ArrayHashsetTest {
public static void Run()
{
// int arrays
int[] nums1 = {
1, 2, 3};
int[] nums2 = {
1, 2, 3};
HashSet<int[]> arraySet = new HashSet<>();
arraySet.add(nums1);
arraySet.add(nums2);
System.out.println(String.format("Int arrays in hash set: %d", arraySet.size()));
// array lists
ArrayList<Integer>
Java与C# HashSet对比:为何ArrayList在Java HashSet中的行为差异

本文揭示了Java和C#中HashSet处理int[]和ArrayList的不同之处,Java利用ArrayList元素的HashCode求和导致对象被视为同一,而C#默认使用内存地址。理解这一差异有助于优化数据去重和集合操作。
最低0.47元/天 解锁文章
12万+

被折叠的 条评论
为什么被折叠?



