有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中将比较器植入字符串数组

假设我有一个方法-private static void sort(String[] arr)
现在我想使用比较器对这个数组进行排序-String.CASE_INSENSITIVE_ORDER
在传递之前,是否可以将其设置为字符串arr的默认比较器
此函数的参数sort。就好像我不需要在sort函数中修改任何东西来修改它的行为一样。这就像比较器被植入
arr


共 (1) 个答案

  1. # 1 楼答案

    数组应该是基本的、简单的容器

    如果需要更多功能,请使用Java Collections Framework中的类

    如果元素是不同的(不需要跟踪重复项),则使用^{}实现。Java捆绑了两个。一个是^{}

    NavigableSet< String > navSet = new TreeSet<>() ;
    

    默认情况下,可导航集通过调用对象的compareTo方法来使用对象的“自然顺序”。或者,您可以将Comparator传递给构造函数,以用于排序

    在您的例子中String类携带一个Comparator实现作为常量:^{}

    NavigableSet< String > navSet = new TreeSet<>( String.CASE_INSENSITIVE_ORDER ) ;
    

    警告:该比较器在对字符串排序时不考虑区域设置。对于熟悉区域设置的排序,请改用^{}

    你说:

    It's like I wont have to change anything inside the sort function to modify its behavior. It's like the comparator gets implanted into the arr

    这正是通过为集合类指定Comparator得到的结果