美文网首页
java容器(2)

java容器(2)

作者: 心跳小鹿_3a43 | 来源:发表于2020-03-23 18:45 被阅读0次

 一、容器的比较

        (1)排序:将一组数据按相应的规则排列顺序。

                 1.规则:

                        基本数据类型:如数据,就是日常的大小排序;

                         引用数据类型:

                                a)内置类(String,integer等),内部已经指定规则,直接使用即可;

                                b)自定义类,需要按业务规则排序;

                      2.顺序:

                                升序  从小到大

                                降序   从大到小

                        3.排序:算法  如冒泡  ,选择 ,插入  shell、堆等

            1.基本数据类型比较:

                        比如:(1)冒泡排序初级版:

                                    package cn.yulei.bubble;

                                    import java.util.Arrays;

                                    /**

                                        * 冒泡排序初级版

                                        */

                                    public class bubblesort01 {

                                    public static void main(String[] args) {

                                     int[] arr ={6,5,7,8,9,3};

                                        sort(arr);

                                        }

                                    public static void sort(int[] arr){

                                    for (int i=0;i<arr.length-1;i++){

                                    System.out.println("这是第"+(i+1)+"趟");

                                     for (int j=0;j<arr.length-1;j++){

                                        System.out.print("这是第"+(j+1)+"次");

                                            if (arr[j]<arr[j+1]){

                                                    int temp=arr[j];

                                                    arr[j]=arr[j+1];

                                                    arr[j+1]=temp;

                                                    }

                                    System.out.println(Arrays.toString(arr));

                                                        }

                                                      }

                                        }

                                    }

                         (2)冒泡排序的终极版本:

package cn.yulei.bubble;

import java.util.Arrays;

/**

* 冒泡排序的最终版  避免有序而频繁排序    并减少排序的次数

*/

public class BubbleSort03 {

public static void main(String[] args) {

int[] arr ={8,9,5,4,3,2};

sort(arr);

}

public static void sort(int[] arr){

for (int i=0;i

boolean sorted=true;//假设有序

            System.out.println("这是第"+(i+1)+"趟");

for (int j=0;j

                System.out.print("这是第"+(j+1)+"次");

if (arr[j]

int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

sorted=false;//假设失败

                }

if(sorted){

break;

}

}

System.out.println(Arrays.toString(arr));

}

}

}

2.引用数据类型比较

   (1) Comparable接口

                    引用类型:     Integer         String    Date

            a)整数,小数Interger Float  Double直接比较数据类型的大小

        b)字符:比较的Unicode码之差

        c)字符串:

                    1)如果其中一个是另外一个起始开始的子串,返回长度之差

                    2)否则返回第一个不相等的unicode码之差。

            d)java.util Date:  根据日期长整形数比较


    排序工具类:

            package cn.yulei.innerType;     

import java.util.Arrays;

import java.util.List;

/**

*冒泡 排序

*/

public class Utils {

/**

    * 容器排序使用泛型

    */

    public static  >void sort(List list) {

//第一步:转成数组

        Object[]  arr= list.toArray();

sort( arr);

//第二步:改变容器中对应的值

        for (int i=0;i

list.set(i,(T)(arr[i]));

}

}

/**

    * 数组排序使用泛型

    */

    public static  >void sort(T[] arr){

for (int i=0;i

boolean sorted=true;//假设有序

            for (int j=0;j

                if (((Comparable)arr[j]).compareTo(arr[j+1])>0){

T temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

sorted=false;//假设失败

                }

}

if(sorted){

break;

}

}

System.out.println(Arrays.toString(arr));

}

/**

    * 数组的排序

    *

*/

    public static void sort(Object[] arr){

for (int i=0;i

boolean sorted=true;//假设有序

            for (int j=0;j

                if (((Comparable)arr[j]).compareTo(arr[j+1])>0){

Object temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

sorted=false;//假设失败

                }

}

if(sorted){

break;

}

}

System.out.println(Arrays.toString(arr));

}

}


Demo类 实现冒泡方法

package cn.yulei.innerType;

/**

* 实现容器排序

*/

import java.util.ArrayList;

import java.util.List;

public class Demo04 {

public static void main(String[] args) {

List list=new ArrayList();

list.add("a");

list.add("abc");

list.add("ab");

Utils.sort(list);

}

}

(3)comparator比较器:

比如: package cn.yulei.innerType;

/**

* 排序规则的业务类

*/

import java.util.Comparator;

public class StringCompimplements Comparator {

/**

    * 按长度比较大小

    * 正数  >

    * 负数 <

* 0 ==

*/

    @Override

    public int compare(String o1, String o2) {

int len1=o1.length();

int len2=o2.length();

return len1-len2;

}

}

(4)容器比较工具类

容器比较方法

比如:package cn.yulei.innerType;

import java.util.*;

/**

*使用collections对容器的比较

*/

public class Demo05 {

public static void main(String[] args) {

/**

        * 使用collections业务排序  比较器

        */

        List list=new ArrayList();

list.add("niubi");

list.add("abc");

list.add("haha");

Collections.sort(list,new StringComp());//业务排序  根据比较器

System.out.println(list);

System.out.println("=========容器实体排序============");

List list01=new ArrayList();

list01.add("niubi");

list01.add("abc");

list01.add("haha");

Collections.sort(list01);  //实体排序

System.out.println(list01);

}

}

相关文章

网友评论

      本文标题:java容器(2)

      本文链接:https://www.haomeiwen.com/subject/atnwyhtx.html