java sort list of strings by string value entered by a user

心已入冬 提交于 2020-02-06 07:35:11

问题


I am looking for a way in java to sort a list of strings based on user input in Java. for example, my list contains ["Pat Henderson", "Zach Harrington", "Pat Douglas", "Karen Walsh"], if a user enters the first name "Pat" how would I be able to print out only the Pats in the list and same for surnames?


回答1:


ArrayList<String> str = new ArrayList<String>();

for(int i = 0 ; i < str.size() ; i++) {
    if(str.get(i).contains("your_user_input")) {
        System.out.println(str.get(i));
    }
}



回答2:


.filter() introduced in Java 8 would to the thing.

List<String> names = new ArrayList<>();
names.addAll(Arrays.asList("Pat Henderson", "Zach Harrington", "Pat Douglas", "Karen Walsh"));

String startsWith = "Pat";

List<String> filteredNames = names.stream()
        .filter(name -> name.startsWith(startsWith))
        .collect(Collectors.toList());

A little remark. Sorting is when you rearrange the position of the elements without removing any.




回答3:


Supposing that each element of the list have a name and a last name separated by a whitespace or more, with Java 8 you could filter on the name or the last name in this way :

List<String> list = Arrays.asList("Pat Henderson", "Zach Harrington", "Pat Douglas", "Karen Walsh");
String nameOrLastNameToFilter = ...;
list.stream().filter(s -> Arrays.stream(s.split("\\s+"))
                                .anyMatch(n->n.equals(nameOrLastNameToFilter))
                    )
    .collect(toList());


来源:https://stackoverflow.com/questions/57998146/java-sort-list-of-strings-by-string-value-entered-by-a-user

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!