해시 맵과 ArrayList가 있습니다. 그들 모두를 인쇄하려고 시도 했으므로 둘 다 채워져 정상적으로 작동합니다. arrayList는 MeterNumbers를 포함합니다 (MeterNumber는 HashMap의 키입니다). 지도에는 키의 경우 MeterNumbers가, 값의 경우 String이 포함됩니다.HashMap은 명백한 이유없이 null 값을 계속 반환합니다.
내가 할 수있게하려면, ArrayList에서 제공 할 MeterNumber 키가있는 hasMap에서 String 값을 가져온다. 나는 그것이 존재 하는지를 확인할 필요가 있다고 생각하지 않는다. 나는 그것이 확실하다는 것을 안다. 나는 값을 얻기 위해 할 수있는 모든 노력을 기울 였지만, 계속 null 값을주고있다. 여기 내 코드가있다. meters.txt에 대한
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Try {
static Map <MeterNumber, String> map2 = new HashMap <MeterNumber, String>();
static ArrayList<MeterNumber> blackOutMeters = new ArrayList<MeterNumber>();
public static void main (String args[]) {
try {
Scanner sc2 = new Scanner(new java.io.File("meters.txt"));
Scanner sc3 = new Scanner(new java.io.File("outages.txt"));
while (sc2.hasNextLine()) {
String transformerId;
MeterNumber meterId;
String line = sc2.nextLine();
String[] array = line.split(" ");
if (array.length>3){
transformerId = array[3];
meterId = MeterNumber.fromString(array [0] + array [1] + array [2]);
map2.put(meterId, transformerId);
}
}
// System.out.println (map2.values());
while (sc3.hasNextLine()) {
MeterNumber meterId;
String line = sc3.nextLine();
String[] array = line.split(" ");
if (array.length>2){
meterId = MeterNumber.fromString(array [0] + array [1] + array [2]);
blackOutMeters.add(meterId);
}
}
for (int i = 0; i <blackOutMeters.size(); i++){
String s = map2.get(blackOutMeters.get(i));
System.out.println (s);
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}}
파일 형식은 다음과 같습니다 outages.txt에 대한
900 791 330 T1
379 165 846 T1
791 995 073 T1
342 138 557 T1
114 125 972 T1
970 324 636 T1
133 997 798 T1
308 684 630 T1
169 329 493 T1
540 085 209 T1
265 229 117 T1
970 173 664 T1
264 943 573 T1
462 043 136 T1
087 307 071 T1
001 343 243 T1
파일 형식은 다음과 같습니다
900 791 330
379 165 846
791 995 073
342 138 557
114 125 972
970 324 636
133 997 798
미리 감사드립니다.
을 비교하는 방법을 알 수있는 방법이 없습니다
MeterNumber
에 대한
hashCode
및equals
를 구현해야? –그 이유는, 1) 지정된 키에 대응하는 항목이 발견되지 않았던 것이 원인으로, 일반적으로 나쁜 등가/해시 코드 또는 2) null가 값으로서 할당되고있는 것을 나타냅니다. "No Reason"으로 컴퓨터 문제에 접근하는 것은 생산적이지 않습니다. – user2864740
(그리고 equals/hashCode와 관련이 있다면 많은 중복이 있습니다.) – user2864740