Làm thế nào tôi có thể so sánh tốt nhất hai HashMap
, nếu tôi muốn tìm hiểu xem không ai trong số chúng chứa các khóa khác với cái kia và nếu các giá trị của các phím đó khớp với nhau.
Map mapA = new HashMap[];
mapA.put["A", "1"];
mapA.put["B", "2"];
Map mapB = new HashMap[];
mapB.put["D", "4"];
mapB.put["A", "1"];
Khi so sánh A với B, nó sẽ thất bại do các khóa B và D. khác nhau
Làm thế nào tôi có thể so sánh tốt nhất các hashmap không phân loại?
Neo
Phim huy hiệu bạc 17111 silver badge11 bronze badges
Đã hỏi ngày 7 tháng 1 năm 2014 lúc 10:26Jan 7, 2014 at 10:26
Thành viênmembersound
77.1K175 Huy hiệu vàng543 Huy hiệu bạc1043 Huy hiệu Đồng175 gold badges543 silver badges1043 bronze badges
Đơn giản chỉ cần sử dụng:
mapA.equals[mapB];
So sánh đối tượng được chỉ định với bản đồ này cho sự bình đẳng. Trả về đúng nếu đối tượng đã cho cũng là bản đồ và hai bản đồ đại diện cho cùng một ánh xạsame mappings
Đã trả lời ngày 7 tháng 1 năm 2014 lúc 10:32Jan 7, 2014 at 10:32
user2336315user2336315user2336315
15.3k10 Huy hiệu vàng42 Huy hiệu bạc64 Huy hiệu đồng10 gold badges42 silver badges64 bronze badges
5
Thực hiện kiểm tra equals
trên keySet[]
của cả hai HashMap
.
NOTE:
Nếu
public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
0 của bạn chứa các phím public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
1 thì không có vấn đề gì, nhưng nếu bản đồ của bạn chứa các phím loại public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
2 thì bạn cần đảm bảo rằng lớp public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
2 của bạn thực hiện public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
4.Đã trả lời ngày 7 tháng 1 năm 2014 lúc 10:28Jan 7, 2014 at 10:28
Narendra Pathainarendra PathaiNarendra Pathai
40.5K18 Huy hiệu vàng80 Huy hiệu bạc120 Huy hiệu đồng18 gold badges80 silver badges120 bronze badges
2
So sánh mọi khóa trong MAPB với đối tác trong MAPA. Sau đó kiểm tra xem có bất kỳ khóa nào trong MAPA không tồn tại trong MAPB
public boolean mapsAreEqual[Map mapA, Map mapB] {
try{
for [String k : mapB.keySet[]]
{
if [!mapA.get[k].equals[mapB.get[k]]] {
return false;
}
}
for [String y : mapA.keySet[]]
{
if [!mapB.containsKey[y]] {
return false;
}
}
} catch [NullPointerException np] {
return false;
}
return true;
}
Đã trả lời ngày 9 tháng 11 năm 2014 lúc 17:04Nov 9, 2014 at 17:04
1
/* JAVA 8 using streams*/
public static void main[String args[]]
{
Map map = new HashMap[];
map.put[100, true];
map.put[1011, false];
map.put[1022, false];
Map map1 = new HashMap[];
map1.put[100, false];
map1.put[101, false];
map1.put[102, false];
boolean b = map.entrySet[].stream[].filter[value -> map1.entrySet[].stream[].anyMatch[value1 -> [value1.getKey[] == value.getKey[] && value1.getValue[] == value.getValue[]]]].findAny[].isPresent[];
System.out.println[b];
}
Đã trả lời ngày 31 tháng 1 năm 2018 lúc 4:22Jan 31, 2018 at 4:22
public boolean compareMap[Map map1, Map map2] {
if [map1 == null || map2 == null]
return false;
for [String ch2 : map1.keySet[]] {
if [!map1.get[ch2].equalsIgnoreCase[map2.get[ch2]]]
return false;
}
for [String ch2 : map2.keySet[]] {
if [!map2.get[ch2].equalsIgnoreCase[map1.get[ch2]]]
return false;
}
return true;
}
Đã trả lời ngày 14 tháng 3 năm 2016 lúc 6:29Mar 14, 2016 at 6:29
SanasanaSanA
1191 Huy hiệu bạc6 Huy hiệu đồng1 silver badge6 bronze badges
Nếu bạn có hai bản đồ, hãy nói MAP1 và MAP2 sau đó sử dụng các luồng Java8, chúng ta có thể so sánh các bản đồ bằng mã bên dưới.
boolean b = map1.entrySet[].stream[].filter[value ->
map2.entrySet[].stream[].anyMatch[value1 ->
[value1.getKey[].equals[value.getKey[]] &&
value1.getValue[].equals[value.getValue[]]]]].findAny[].isPresent[];
System.out.println["comparison "+b];
Đã trả lời ngày 30 tháng 11 năm 2018 lúc 4:59Nov 30, 2018 at 4:59
SwatiswatiSwati
Phù hiệu bằng đồng 1144 bronze badges