已解决
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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!