当前位置:首页 > 编程笔记 > 正文
已解决

Java 为01序列实现快速 HashSet

来自网友在路上 180880提问 提问时间:2023-09-19 18:46:48阅读次数: 80

最佳答案 问答题库808位专家为你答疑解惑

01 数组

import java.util.BitSet;
import java.util.HashMap;
import java.util.Arrays;public class FastHashSet {private HashMap<Integer, BitSet> map = new HashMap<>();public void add(int[] array) {BitSet bitSet = new BitSet(array.length);for (int i = 0; i < array.length; i++) {if (array[i] == 1) {bitSet.set(i);}}map.put(Arrays.hashCode(array), bitSet);}public boolean contains(int[] array) {BitSet bitSet = new BitSet(array.length);for (int i = 0; i < array.length; i++) {if (array[i] == 1) {bitSet.set(i);}}BitSet existingBitSet = map.get(Arrays.hashCode(array));return existingBitSet != null && existingBitSet.equals(bitSet);}
}

01 矩阵

import java.util.Arrays;public class Matrix {private int[][] data;public Matrix(int[][] data) {this.data = data;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Matrix matrix = (Matrix) o;return Arrays.deepEquals(data, matrix.data);}@Overridepublic int hashCode() {return Arrays.deepHashCode(data);}
}
import java.util.HashSet;public class Main {public static void main(String[] args) {HashSet<Matrix> set = new HashSet<>();// 添加新的二维数组set.add(new Matrix(new int[][]{{1, 0}, {0, 1}}));// 检查二维数组是否存在System.out.println(set.contains(new Matrix(new int[][]{{1, 0}, {0, 1}})));}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Java 为01序列实现快速 HashSet":http://eshow365.cn/6-9496-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!