java 对基本数据类型和字符串进行排序

对基本数据类型和字符串进行排序

基本数据类型集合排序
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    List<Integer>prices = new ArrayList<Integer>();

    for (int i = 0; i < 5; i++) {

        System.out.println("请输入第" + (i + 1) + "个商品的价格");

        int p = input.nextInt();

        prices.add(Integer.valueOf(p));//将录入的价格保存到List中

    }

    Collections.sort(prices);//调用sort()方法对集合进行排序

    System.out.println("价格从低到高的排列为:");

    for (int i = 0; i < prices.size(); i++){

        System.out.println(prices.get(i) + "\t");

    }

}

字符串集合排序
public static void main(String[] args) {
    //定义List,往list里添加数据
    List<String> list = new ArrayList<String>();
    list.add("orange");
    list.add("tomato");
    list.add("apple");
    list.add("litchi");
    list.add("banana");
    
    //迭代器遍历方法输出
    Iterator it = list.iterator();
    while (it.hasNext()){
        System.out.print(it.next() + "  ");
    }
    
    System.out.println(" ");
    System.out.println("***********************");

    //排序
    Collections.sort(list);
    
    Iterator its = list.iterator();
    while (its.hasNext()){
        System.out.print(its.next() + "  ");
    }
}
Comparator 接口(自定义排序)

要注意的是:

  1. 若一个类要实现Comparator接口:它一定要实现compare(T o1, T o2) 函数,但可以不实现 equals(Object obj) 函数。
  2. int compare(T o1, T o2) 是“比较o1和o2的大小”,其中o1指的就是第一个要比较的对象, o2指的就是第二要比的对象。 比较之后会根据大小返回值。 返回“负数”, 意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2。
  3. 不重写 Object.equals(Object) 方法总是安全的。然而,在某些情况下,重写此方法可以允许程序确定两个不同的 Comparator 是否强行实施了相同的排序,从而提高性能。
  • Compare :比较用啦排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数,零,或正整数。
  • quals : 指示某个其他对象是否“等于”此Comparator。此方法必须遵守Object.equals(Object)的常规协定。此外,仅当指定的对象于是一个Comparator,并且强行实施于此Comparator相同的排序时,此方法才返回true。因此,compl.equals(comp2)意味着对每个对象引用o1和o2而言,都存在sgn(compl.compare(o1,o2)) == sgn(somp2.compare(o1,o2))。
Comparable 接口(自然排序)

Comparable接口内部只有一个要重写的关键的方法,为:

int compareTo(T o);

该方法只返回一个int型的值,例如 i = x.compareTo(y) ,如果i = 0,则表明x和y在排位上是相等的(并非意味着x.equals(y) = true, 但是jdk api上强烈建议这样处理)。

如果返回数值 i>0,则意味 x>y,反之若 i<0,意味x<y。

发布了19 篇原创文章 · 获赞 0 · 访问量 308

猜你喜欢

转载自blog.csdn.net/weixin_45956838/article/details/103599896
今日推荐