package com.test;import java.util.ArrayList;
import java.util.List;public class Test {public static void main(String[] args) {// 目标分辨率int targetWidth = 640;int targetHeight = 480;//String str = "3264x2448,3264x1836,2560x1920,3264x1472,3200x1440,2304x1728,2560x1440,1920x1920,2048x1536,2304x1296,1920x1440,2400x1080,1920x1080";String str = "2560x1920,3264x1472,3200x1440,2304x1728,2560x1440,1920x1920,2048x1536,2304x1296,1920x1440,2400x1080,2304x1040,1920x1080,1632x1224,1600x1200,1440x1080,1280x960,1088x1088,1600x720,1280x720,960x540,800x600,800x480,720x480,352x288,320x240,176x144";String[] ary1 = str.split(",");List<String> list = new ArrayList<String>();for (int i = 0; i < ary1.length; i++) {String sss = ary1[i];list.add(sss);}//获取和目标值最接近的一组分辨率String s = getBestResolution(list,targetWidth,targetHeight);// 输出最接近目标分辨率的数据System.out.println("最接近目标分辨率的数据为:"+s);}/*** 获取和目标值最接近的一组分辨率* @param list 分辨率集合,例如:[960x540,800x600,800x480,720x480,352x288,320x240,176x144]* @param targetWidth 目标分辨率宽,例如:640* @param targetHeight 目标分辨率高,例如:480* @return 和目标值最接近的一组分辨率,例如:720x480*/public static String getBestResolution(List<String>list,int targetWidth,int targetHeight) {// 数据集合List<Resolution> resolutions = new ArrayList<Resolution>();for (int i = 0; i < list.size(); i++) {String sss = list.get(i);String[] ary2 = sss.split("x");Resolution resolution = new Resolution(Integer.parseInt(ary2[0]), Integer.parseInt(ary2[1]));resolutions.add(resolution);}// 初始化最小差距为最大值int minDifference = Integer.MAX_VALUE;Resolution closestResolution = null;// 遍历数据集合,找到最接近目标分辨率的数据for (Resolution resolution : resolutions) {int difference = Math.abs(resolution.width - targetWidth) + Math.abs(resolution.height - targetHeight);if (difference < minDifference) {minDifference = difference;closestResolution = resolution;}}String res = String.format("%dx%d",closestResolution.width,closestResolution.height);return res;}// 分辨率类static class Resolution {int width;int height;public Resolution(int width, int height) {this.width = width;this.height = height;}}
}
输出结果
最接近目标分辨率的数据为:720x480