泛型 Java语言程序设计 第十九章(19.6、19.7、19.8、19.9)

程序小白,希望和大家多交流,共同学习
这里写图片描述
19.6

//查找二维数组中的最大值
import java.util.Scanner;

public class TwoDimensionalArrayMax
{
    public static void main(String[] args)
    {
        Integer[][] list = new Integer[5][5];
        Scanner input = new Scanner(System.in);

        System.out.println("创建一个二维整型数组(5行5列):");
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                list[i][j] = input.nextInt();
            }
        }

        Integer max = max(list);
        System.out.println("二维数组最大的数值是:" + max);
    }
    //返回二维数组的最大值
    public static <E extends Comparable<E>> E max(E[][] list)
    {
        int row = list.length;
        int column = list[0].length;
        E max = list[0][0];
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                if (list[i][j].compareTo(max) > 0)
                {
                    max = list[i][j];
                }
            }
        }

        return max;
    }
}

19.7

//泛型的二分法查找
//要查找就要比较,那么数据类型就要继承自Comparable
//二分法查找,数组要求有序
import java.util.Scanner;

public class GenericBinarySearch
{
    public static void main(String[] args)
    {
        Integer[] list = new Integer[9];
        Scanner input = new Scanner(System.in);
        System.out.println("请输入9个整型元素(升序):");
        for (int i = 0; i < 9; i++)
        {
            list[i] = input.nextInt();
        }

        System.out.println("请输入需要查找的数:");
        Integer key = input.nextInt();
        System.out.println(key + " 的下表是:" + binarySearch(list, key));
    }
    //二分法查找
    public static <E extends Comparable<E>> int binarySearch(E[] list, E key)
    {
        int left = 0;
        int right = list.length;
        while (left < right)
        {
            int mid = (right + left) / 2;
            System.out.println(mid);
            if (list[mid].compareTo(key) == 0) 
            {
                return mid;
            }

            if (list[mid].compareTo(key) > 0)
            {
                right = mid - 1;
            }

            if (list[mid].compareTo(key) < 0)
            {
                left = mid + 1;
            }
        }

        return -1;
    }
}

19.8

//打乱ArrayList
import java.util.ArrayList;
import java.util.Scanner;

public class ShuffleArrayList
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();

        System.out.println("生成一个整数队列,输入-1表示结束:");
        boolean in = true;
        while (in)
        {
            Integer num = input.nextInt();
            if (num == -1)
            {
                break;
            }
            else
            {
                list.add(num);
            }
        }

        shuffle(list);
        int size = list.size();
        for (int i = 0; i < size; i++)
        {
            System.out.print(list.get(i) + " ");
        }

        System.out.println();
    }

    public static <E> void shuffle(ArrayList<E> list)
    {
        int size = list.size();
        for (int i = 0; i < size; i++)
        {
            int index = (int)(Math.random() * size);
            E temp = list.get(index);
            list.set(index, list.get(i));
            list.set(i, temp);
        }
    }
}

19.9

//对ArrayList排序
import java.util.Scanner;
import java.util.ArrayList;

public class SortArrayList
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();

        System.out.println("创建一个整型列表,输入-1表示结束:");
        boolean in = true;
        while (in)
        {
            Integer num = input.nextInt();
            if (num == -1)
            {
                break;
            }
            else
            {
                list.add(num);
            }
        }
        sort(list);

        int size = list.size();
        for (int i = 0; i < size; i++)
        {
            System.out.print(list.get(i) + " ");
        }
        System.out.println();
    }

    public static <E extends Comparable<E>> 
        void sort(ArrayList<E> list)
    {
        int size = list.size();
        for (int i = 0; i < size - 1; i++)
        {
            E min = list.get(i);
            int minIndex = i;
            for (int j = i + 1; j < size; j++)
            {
                if (list.get(j).compareTo(min) < 0)
                {
                    min = list.get(j);
                    minIndex = j;
                }
            }

            if (minIndex != i)
            {
                list.set(minIndex, list.get(i));
                list.set(i, min);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/cheng_cuo_tuo/article/details/80022645