list 배열 저장 키 값 형식 데이터 인 스 턴 스

13507 단어 IT문 제 를 풀다
많은 사람들 이 List 배열 을 사용 한 적 이 있 죠? 우 리 는 자주 이 를 이용 하여 흔히 볼 수 있 는 데이터 형식 이나 인용 유형 을 저장 합 니 다. 예 를 들 어 List, List 등 최근 에 LeetCode 문 제 를 풀 때 데이터 형식 이 2 차원 좌표 형식의 데 이 터 를 만 났 습 니 다. 예 를 들 어 (0, 1), (3, 4) 이런 데이터 나 키 값 이 유형 에 대한 데 이 터 를 만 났 습 니 다.(key, value). 일반적으로 우 리 는 map 데이터 구조 로 저장 합 니 다. 그러면 List 로 이 데 이 터 를 저장 할 수 있 습 니까? list 는 순서 에 대처 하 는 좋 은 조력자 이기 때 문 입 니 다!
핵심 코드
 List<Map.Entry<Integer,Integer>> list=new ArrayList<Map.Entry<Integer,Integer>>(map.entrySet());

잔말 말고 실례 를 좀 봅 시다
고전 제목: 배열 의 앞 K 개의 고주파 요 소 를 찾 습 니 다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LeetCode347 k     _        {
     
	 public static void main(String[] args) {
     
		  int[] nums= {
     1,5,2,4,8,7,5,11,45,5,2,14,2,5,8,11,8,5,4};
		  int k=5;
		  int[] ans=topKFrequent(nums, k);
		  System.out.println(Arrays.toString(ans));
	}
	 public static int[] topKFrequent(int[] nums, int k) {
     
	        int[] ans=new int[k];
	        Map<Integer,Integer> map=new HashMap();
	        for(int i=0;i<nums.length;++i){
                 
	            map.put(nums[i],map.getOrDefault(nums[i],0)+1);
	            
	        }
	        //        List           
	        List<Map.Entry<Integer,Integer>> list=new ArrayList<Map.Entry<Integer,Integer>>(map.entrySet());
	        //	 list    ,  comparator   compare  
	        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
     
	           @Override
	           public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
     
	      //      value      ,          o1.getValue()-o2.getValue();
	               return o2.getValue()-o1.getValue();
	     
	           }
	       });
	        for(int i=0;i<k;++i){
     
           		 ans[i]=list.get(i).getKey();
        	}
       		return ans;
       	}
}

출력 표시: [5, 2, 8, 4, 11]

좋은 웹페이지 즐겨찾기