public static Stream<String> getFeel(List list) { String[] fileName1 = new String[list.size()]; for (int i = 0; i < list.size(); i++) { fileName1[i] = (String) list.get(i); } String[] fileName = fileName1; Stream<String> sorted = Arrays.asList(fileName).stream().sorted((e1, e2) -> { String substring = e1.substring(0, e1.lastIndexOf(".")); String substring1 = e2.substring(0, e2.lastIndexOf(".")); String[] s1 = substring.split("-"); String[] s2 = substring1.split("-"); Integer v1 = Integer.parseInt(s1[0]) * 100000 + Integer.parseInt(s1[1]); Integer v2 = Integer.parseInt(s2[0]) * 100000 + Integer.parseInt(s2[1]); return v1 - v2; }); return sorted; } public static void main(String[] args) { List<String>list=new ArrayList(); list.add("3-1.mp4"); list.add("2-1.mp4"); list.add("5-1.mp4"); list.add("1-1.mp4"); list.add("1-5.mp4"); List<String>list1=new ArrayList(); Stream<String> feel = getFeel(list); feel.forEach(s ->list1.add(s) ); list1.forEach(System.out::println); }