1. 程式人生 > >泛型 Java語言程式設計 第十九章(19.1、19.2、19.3、19.4、19.5)

泛型 Java語言程式設計 第十九章(19.1、19.2、19.3、19.4、19.5)

程式小白,希望和大家多交流,共同學習
這裡寫圖片描述
19.1

//使用陣列實現棧,當陣列滿的時候,自動建立一個更大的陣列
import java.util.Arrays;
public class ArrayGenericStack<E>
{
    private int max = 10;
    private int last = 0;
    private E[] array;

    public ArrayGenericStack()
    {
        array = (E[])new Object[max];
    }

    public void push(E o)
    {
        if
(isFull()) { //System.out.println("full"); max *= 2; E[] newArray = (E[])new Object[max]; int length = array.length; for (int i = 0; i < length; i++) { newArray[i] = array[i]; } array = newArray; } array[last] = o; last++; } public
E pop() { if (isEmpty()) { return null; } E o = array[last--]; return o; } public E peek() { return array[last - 1]; } public boolean isEmpty() { return last == 0; } public boolean isFull() { return
last == max; } @Override public String toString() { String info = ""; for (int i = 0; i < last; i++) { info += " " + array[i]; } return info; } }

19.2

import java.util.ArrayList; 
//注意這裡包的引入不是ArrayList<E>

public class ArrayListStack<E> extends ArrayList<E>
{
    public ArrayListStack()
    {
        super();
    }

    public int getSize()
    {
        return super.size();
    }

    public E peek()
    {
        return super.get(0);
    }

    public E pop()
    {
        E o = super.get(getSize() - 1);
        super.remove(getSize() - 1);
        return o;
    }

    public void push(E o)
    {
        add(o);
    }

    public boolean isEmpty()
    {
        return super.isEmpty();
    }

    @Override
    public String toString()
    {
        return "ArrayListStack: " + super.toString();
    }
}
//測試繼承自ArrayList的棧
import java.util.Scanner;

public class TestArrayListStack
{
    public static void main(String[] args)
    {
        System.out.println("清輸入五個字串:");
        Scanner input = new Scanner(System.in);

        ArrayListStack<String> stack = new ArrayListStack<>();
        String str = "";
        for (int i = 0; i < 5; i++)
        {
            str = input.nextLine();
            stack.push(str);
        }

        while (!stack.isEmpty())
        {
            System.out.println(stack.pop());
        }
    }
}

19.3

//佇列去重

import java.util.ArrayList;
import java.util.Scanner;

public class DuplicateRemoval
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        int num = 0;
        boolean in = true;
        System.out.println("建立一個整型列表(-1表示結束):");
        while (in)
        {
            num = input.nextInt();
            if (num == -1)
            {
                break;
            }
            list.add(new Integer(num));
        }

        ArrayList<Integer> finalList = removeDulicates(list);
        int size = finalList.size();
        for (int i = 0; i  < size; i++)
        {
            System.out.print(finalList.get(i) + " ");
        }
        System.out.println();
    }
    //佇列內容去重
    public static <E> ArrayList<E> removeDulicates(ArrayList<E> list)
    {
        ArrayList<E> finalList = new ArrayList<>();
        int size = list.size();
        for (int i = 0; i < size; i++)
        {
            if (finalList.indexOf(list.get(i)) == -1)
            {
                finalList.add(list.get(i));
            }
        }

        return finalList;
    }
}

19.4

//實現對泛型型別的線性搜尋
import java.util.Scanner;

public class LinearSearchGeneric
{
    public static void main(String[] args)
    {
            Integer[] list = new Integer[10];
            Scanner input = new Scanner(System.in);
            System.out.println("請輸入10個整型元素:");
            for (int i = 0; i < 10; i++)
            {
                list[i] = input.nextInt();
            }

            System.out.println("請輸入需要查詢的數:");
            Integer key = input.nextInt();
            System.out.println(key + " 的下表是:" + (linearSearch(list, key) + 1));
    }
    //線性查詢元素
    public static <E extends Comparable<E>> int linearSearch(E[] list, E key)
    {
        int length = list.length;
        for (int i = 0; i < length; i++)
        {
            if (list[i].compareTo(key) == 0)
            {
                return i;
            }
        }

        return -1;
    }
}

19.5

//使用泛型查詢最大值
import java.util.Scanner;

public class GenericMax
{
    public static void main(String[] args)
    {
        Integer[] list = new Integer[10];
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入10個整型:");
        for (int i = 0; i < 10; i++)
        {
            list[i] = input.nextInt();
        }

        Integer max = max(list);
        System.out.println("最大值是:" + max);
    }
    //返回陣列中最大值
    public static <E extends Comparable<E>> E max(E[] list)
    {
        E max = list[0];
        int length = list.length;
        for (int i = 1; i < length; i++)
        {
            if (list[i].compareTo(max) > 0)
            {
                max = list[i];
            }
        }

        return max;
    }
}

相關推薦

Java語言程式設計 19.119.219.319.419.5

程式小白,希望和大家多交流,共同學習 19.1 //使用陣列實現棧,當陣列滿的時候,自動建立一個更大的陣列 import java.util.Arrays; public class Array

Java語言程式設計 14.114.214.314.412.514.6

程式小白,希望和大家多交流,共同學習 因為沒有第十版的漢語電子書,(有的漢語版是第八版,使用的還是Swing)這部分內容只能使用英語版截圖。 14.1 //將image資料夾中的照片加載出來 import javafx.application.

Java語言程式設計 15.2915.3015.3115.32

程式小白,希望和大家多交流,共同學習 15.29 //進行了擴充 //CarPane,使小車可以按照指定的x,y繪製,並且可以加減速,開始暫停,還有定時器 import javafx.scene.shape.Circle; import j

Java語言程式設計 16.616.716.816.9

程式小白,希望和大家多交流,共同學習 16.6 //文字域的設定方法 import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Sc

Java語言程式設計 15.2515.2615.2715.28

程式小白,希望和大家多交流,共同學習 15.25 //小球沿著正弦影象移動 import javafx.application.Application; import javafx.stage.Stage; import javafx.sce

java語言程式設計 17.1217.1317.1417.1517.16

程式小白,希望和大家多交流,共同學習 17.12 //將多個檔案合併 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im

JAVA語言程式設計 17.817.9

程式小白,希望和大家多交流,共同學習 17.8_1 import java.io.File; import java.io.PrintWriter; import java.util.Scanner; import java.io.IOExceptio

java語言程式設計 基礎篇5.23-26

int n = 50000; double sum1=0; double sum2=0; for(int i =1;i<=n;i++) { sum1 = sum1 + 1.0/i; } System.out.printf(

java語言程式設計 基礎篇5.27

int counter1 = 0; int counter2 = 0; for(int i = 101;i<=2100;i++) { if((i%4==0 && i%100!=0)||i % 400==0) {

java語言程式設計 基礎篇6.2

public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.

java語言程式設計 基礎篇6.3-4

public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.ou

java語言程式設計 基礎篇7.11-16

7.11 public static double deviation(double[] x) { double standardDeviation =0; double numerator=0; double mean=0; mea

java語言程式設計 基礎篇7.17-21

7.17 public static void main(String[] args) { // TODO Auto-generated method stub java.util.Scanner input = new java.util.Scanne

java語言程式設計 基礎篇8.1-5

8.1 Scanner input = new Scanner(System.in); double [][] m = new double [3][4]; System.out.print("Enter a 3-by-4 matrix row by r

java語言程式設計 基礎篇9..1-2

9.1 public class J9_1 { public static void main(String[] args) { // TODO Auto-generated method stub Rectangle a = new Rectang

java語言程式設計程式設計練習題[1.5]

(計算表示式)編寫程式,顯示以下公式的結果。 9.5×4.5-2.5×3 ————————————————— 45.5-3.5 /* * To change this license header, choose License Headers in Project

java語言程式設計程式設計練習題[1.8]

(圓的面積和周長)編寫程式,使用以下公式計算並顯示半徑為5.5的圓的面積和周長。 周長 = 2 × 半徑 × π 面積 = 半徑 × 半徑 × π /* * To change this license header, choose License Headers in Proj

Java 語言程式設計(版) 十三 4

13.4 顯示日曆 import java.text.SimpleDateFormat; import java.util.Date; class PrintCalendar { private String year; private

【小白看的Java教程】,更復雜一點的陣列操作

陣列拷貝(掌握) 需求:定義一個方法arraycopy完成int型別陣列的拷貝 實現int型別陣列元素拷貝(掌握) 從指定源陣列中從指定的位置開始複製指定數量的元素到目標陣列的指定位置。 src - 源陣列 srcPos - 源陣列中的開始索引

Java編程思想》筆記 枚舉類

void serial final eof coff rabl com 筆記 bstr 1.基本enum特征 所有創建的枚舉類都繼承自抽象類 java.lang.Enum; 一個枚舉類,所有實例都要在第一句寫出以 ,隔開。 如果只有實例最後可以不加 ; 枚舉類因為