>

이 형식의 날짜가 있습니다 :

Key        Value 
13:00:08 : 3
13:00:08 : 2
13:00:08 : 2
13:00:06 : 2
13:00:08 : 2
13:00:09 : 1
13:00:07 : 2
13:00:09 : 3

타임 스탬프를 초로 변환합니다. 그런 다음 타임 스탬프를 기준으로 데이터를 정렬해야합니다.

TreeMap 를 사용해 보았습니다  그러나 중복을 제거합니다. 나는 HashMap 를 시도  그러나 중복을 제거합니다. MultiMap  여기서 작동하지 않습니다.

내가 시도한 코드는 :

Map<Integer, Integer> map = new TreeMap<Integer, Integer>(tmap);
        System.out.println("After Sorting:");
        Set set2 = map.entrySet();
        Iterator iterator2 = set2.iterator();
        while(iterator2.hasNext()) {
            Map.Entry me2 = (Map.Entry)iterator2.next();
            System.out.print(me2.getKey() + ": ");
            System.out.println(me2.getValue());
        }

정렬을 어떻게 진행할 수 있습니까?

  • 답변 # 1

    목록을 원하는 것처럼 들립니다.

    개체의 시간과 값을 캡슐화하고 이러한 개체의 목록을 처리합니다. 그런 다음 시간별로 목록을 정렬 할 수 있습니다.

    public class TimeValue {
        LocalTime time;
        int value;
        public TimeValue(LocalTime time, int value) {
            this.time = time;
            this.value = value;
        }
        public LocalTime getTime() {
            return time;
        }
        public static void main(String[] args) {
            List<TimeValue> timeValues = new ArrayList<>();
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 8), 3));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 8), 2));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 8), 2));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 6), 2));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 8), 2));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 9), 1));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 7), 2));
            timeValues.add(new TimeValue(LocalTime.of(13, 0, 9), 3));
            timeValues.sort(Comparator.comparing(TimeValue::getTime));
            System.out.println(timeValues);
        }
        @Override
        public String toString() {
            return this.time + ": " + this.value;
        }
    }
    
    

    와이즈 비즈가 된 이유   List 보다 선호  귀하의 경우 시간이 고유하지 않다는 것입니다. 따라서 키로 사용할 수 없습니다.

  • 답변 # 2

    게시 한 샘플의 실제 문제는 Map 를 생성하는 것입니다  코드 샘플에서. 데이터를 구문 분석하는 것입니다.

    tmap
    
    

    Map<LocalTime, List<Integer>> result = new TreeMap<>(); try (Scanner fileScanner = new Scanner(yourFile)) { while (fileScanner.hasNext()) { try (Scanner lineScanner = new lineScanner(fileScanner.nextLine())) { LocalTime time = DateTimeFormatter.ISO_LOCAL_TIME.parse(lineScanner.next()); // skip the ":" lineScanner.next(); int value = lineScanner.nextInt(); // use the list for this time or create a new one if none is present List<Integer> valueList = result.computeIfAbsent(time, d -> new ArrayList<>()); valueList.add(value); } } }

  • 이전 javascript - threejs - `textureneedsupdate = true` 설정이 매우 느립니다
  • 다음 database - MySQL에서 범위 곱하기