最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你使用Java實(shí)現(xiàn)掃雷小游戲(最新完整版)

 更新時(shí)間:2022年05月12日 08:48:40   作者:orangemilk  
本文給大家介紹使用Java實(shí)現(xiàn)掃雷小游戲,本程序封裝了五個(gè)類(lèi),分別是主類(lèi)GameWin類(lèi),繪制底層地圖和繪制頂層地圖的類(lèi)MapBottom類(lèi)和MapTop類(lèi),繪制底層數(shù)字的類(lèi)BottomNum類(lèi),以及初始化地雷的BottomRay類(lèi)和工具GameUtil類(lèi),用于存靜態(tài)參數(shù)和方法,感興趣的朋友一起看看吧

大家好,我是orangemilk_,哈哈,學(xué)習(xí)Java已經(jīng)到一個(gè)階段啦,今天我們使用GUI來(lái)寫(xiě)一個(gè)掃雷小游戲吧!

效果展示

主類(lèi):GameWin類(lèi)

package com.sxt;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GameWin extends JFrame {
    int width = 2 * GameUtil.OFFSET + GameUtil.MAP_W * GameUtil.SQUARE_LENGTH;
    int height = 4 * GameUtil.OFFSET + GameUtil.MAP_H * GameUtil.SQUARE_LENGTH;
    Image offScreenImage = null;
    MapBottom mapBottom = new MapBottom();
    MapTop mapTop = new MapTop();
    void launch(){
        GameUtil.START_TIME=System.currentTimeMillis();
        this.setVisible(true);
        this.setSize(width,height);
        this.setLocationRelativeTo(null);
        this.setTitle("Java掃雷小游戲");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        //鼠標(biāo)事件
        this.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                super.mouseClicked(e);
                switch (GameUtil.state){
                    case 0 :
                        if(e.getButton()==1){
                            GameUtil.MOUSE_X = e.getX();
                            GameUtil.MOUSE_Y = e.getY();
                            GameUtil.LEFT = true;
                        }
                        if(e.getButton()==3) {
                            GameUtil.MOUSE_X = e.getX();
                            GameUtil.MOUSE_Y = e.getY();
                            GameUtil.RIGHT = true;
                        }
                        //去掉break,任何時(shí)候都監(jiān)聽(tīng)鼠標(biāo)事件
                    case 1 :
                    case 2 :
                        if(e.getButton()==1){
                            if(e.getX()>GameUtil.OFFSET + GameUtil.SQUARE_LENGTH*(GameUtil.MAP_W/2)
                                    && e.getX()<GameUtil.OFFSET + GameUtil.SQUARE_LENGTH*(GameUtil.MAP_W/2) + GameUtil.SQUARE_LENGTH
                                    && e.getY()>GameUtil.OFFSET
                                    && e.getY()<GameUtil.OFFSET+GameUtil.SQUARE_LENGTH){
                                mapBottom.reGame();
                                mapTop.reGame();
                                GameUtil.FLAG_NUM=0;
                                GameUtil.START_TIME=System.currentTimeMillis();
                                GameUtil.state=0;
                            }
                        }
                        break;
                    default:
                }
            }
        });
        while (true){
            repaint();
            try {
                Thread.sleep(40);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    public void paint(Graphics g) {
        offScreenImage = this.createImage(width,height);
        Graphics gImage = offScreenImage.getGraphics();
        //設(shè)置背景顏色
        gImage.setColor(Color.lightGray);
        gImage.fillRect(0,0,width,height);
        mapBottom.paintSelf(gImage);
        mapTop.paintSelf(gImage);
        g.drawImage(offScreenImage,0,0,null);
    }
    public static void main(String[] args) {
        GameWin gameWin = new GameWin();
        gameWin.launch();
    }
}

底層地圖MapBottom類(lèi)

//底層地圖:繪制游戲相關(guān)組件
package com.sxt;
import java.awt.*;
public class MapBottom {
    BottomRay bottomRay = new BottomRay();
    BottomNum bottomNum = new BottomNum();
    {
        bottomRay.newRay();
        bottomNum.newNum();
    }
    //重置游戲
    void reGame(){
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                GameUtil.DATA_BOTTOM[i][j]=0;
            }
        }
        bottomRay.newRay();
        bottomNum.newNum();
    }
    //繪制方法
    void paintSelf(Graphics g){
        g.setColor(Color.BLACK);
        //畫(huà)豎線(xiàn)
        for (int i = 0; i <= GameUtil.MAP_W; i++) {
            g.drawLine(GameUtil.OFFSET + i * GameUtil.SQUARE_LENGTH,
                    3*GameUtil.OFFSET,
                    GameUtil.OFFSET+i*GameUtil.SQUARE_LENGTH,
                    3*GameUtil.OFFSET+GameUtil.MAP_H*GameUtil.SQUARE_LENGTH);
        }
        //畫(huà)橫線(xiàn)
        for (int i = 0; i <=GameUtil.MAP_H; i++){
            g.drawLine(GameUtil.OFFSET,
                    3*GameUtil.OFFSET+i*GameUtil.SQUARE_LENGTH,
                    GameUtil.OFFSET+GameUtil.MAP_W*GameUtil.SQUARE_LENGTH,
                    3*GameUtil.OFFSET+i*GameUtil.SQUARE_LENGTH);
        }
        for (int i = 1; i <= GameUtil.MAP_W ; i++) {
            for (int j = 1; j <= GameUtil.MAP_H; j++) {
                //雷
                if (GameUtil.DATA_BOTTOM[i][j] == -1) {
                    g.drawImage(GameUtil.lei,
                            GameUtil.OFFSET + (i - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.OFFSET * 3 + (j - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.SQUARE_LENGTH - 2,
                            GameUtil.SQUARE_LENGTH - 2,
                            null);
                }
                //數(shù)字
                if (GameUtil.DATA_BOTTOM[i][j] >=0) {
                    g.drawImage(GameUtil.images[GameUtil.DATA_BOTTOM[i][j]],
                            GameUtil.OFFSET + (i - 1) * GameUtil.SQUARE_LENGTH + 15,
                            GameUtil.OFFSET * 3 + (j - 1) * GameUtil.SQUARE_LENGTH + 5,
                            null);
                }
            }
        }
        //繪制數(shù)字,剩余雷數(shù),倒計(jì)時(shí)
        GameUtil.drawWord(g,""+(GameUtil.RAY_MAX-GameUtil.FLAG_NUM),
                GameUtil.OFFSET,
                2*GameUtil.OFFSET,30,Color.red);
        GameUtil.drawWord(g,""+(GameUtil.END_TIME-GameUtil.START_TIME)/1000,
                GameUtil.OFFSET + GameUtil.SQUARE_LENGTH*(GameUtil.MAP_W-1),
                2*GameUtil.OFFSET,30,Color.red);
        switch (GameUtil.state){
            case 0:
                GameUtil.END_TIME=System.currentTimeMillis();
                g.drawImage(GameUtil.face,
                        GameUtil.OFFSET + GameUtil.SQUARE_LENGTH * (GameUtil.MAP_W/2),
                        GameUtil.OFFSET,
                        null);
                break;
            case 1:
                g.drawImage(GameUtil.win,
                        GameUtil.OFFSET + GameUtil.SQUARE_LENGTH * (GameUtil.MAP_W/2),
                        GameUtil.OFFSET,
                        null);
                break;
            case 2:
                g.drawImage(GameUtil.over,
                        GameUtil.OFFSET + GameUtil.SQUARE_LENGTH * (GameUtil.MAP_W/2),
                        GameUtil.OFFSET,
                        null);
                break;
            default:
        }
    }
}

頂層地圖MapTop類(lèi)

頂層地圖類(lèi):繪制頂層組件
package com.sxt;
import java.awt.*;
public class MapTop {
    //格子位置
    int temp_x;
    int temp_y;
    //重置游戲
    void reGame(){
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                GameUtil.DATA_TOP[i][j]=0;
            }
        }
    }
    //判斷邏輯
    void logic(){
        temp_x=0;
        temp_y=0;
        if(GameUtil.MOUSE_X>GameUtil.OFFSET && GameUtil.MOUSE_Y>3*GameUtil.OFFSET){
            temp_x = (GameUtil.MOUSE_X - GameUtil.OFFSET)/GameUtil.SQUARE_LENGTH+1;
            temp_y = (GameUtil.MOUSE_Y - GameUtil.OFFSET * 3)/GameUtil.SQUARE_LENGTH+1;
        }
        if(temp_x>=1 && temp_x<=GameUtil.MAP_W
                && temp_y>=1 && temp_y<=GameUtil.MAP_H){
            if(GameUtil.LEFT){
                //覆蓋,則翻開(kāi)
                if(GameUtil.DATA_TOP[temp_x][temp_y]==0){
                    GameUtil.DATA_TOP[temp_x][temp_y]=-1;
                }
                spaceOpen(temp_x,temp_y);
                GameUtil.LEFT=false;
            }
            if(GameUtil.RIGHT){
                //覆蓋則插旗
                if(GameUtil.DATA_TOP[temp_x][temp_y]==0){
                    GameUtil.DATA_TOP[temp_x][temp_y]=1;
                    GameUtil.FLAG_NUM++;
                }
                //插旗則取消
                else if(GameUtil.DATA_TOP[temp_x][temp_y]==1){
                    GameUtil.DATA_TOP[temp_x][temp_y]=0;
                    GameUtil.FLAG_NUM--;
                }
                else if(GameUtil.DATA_TOP[temp_x][temp_y]==-1){
                    numOpen(temp_x,temp_y);
                }
                GameUtil.RIGHT=false;
            }
        }
        boom();
        victory();
    }
    //數(shù)字翻開(kāi)
    void numOpen(int x,int y){
        //記錄旗數(shù)
        int count=0;
        if(GameUtil.DATA_BOTTOM[x][y]>0){
            for (int i = x-1; i <=x+1 ; i++) {
                for (int j = y-1; j <=y+1 ; j++) {
                    if(GameUtil.DATA_TOP[i][j]==1){
                        count++;
                    }
                }
            }
            if(count==GameUtil.DATA_BOTTOM[x][y]){
                for (int i = x-1; i <=x+1 ; i++) {
                    for (int j = y-1; j <=y+1 ; j++) {
                        if(GameUtil.DATA_TOP[i][j]!=1){
                            GameUtil.DATA_TOP[i][j]=-1;
                        }
                        //必須在雷區(qū)當(dāng)中
                        if(i>=1&&j>=1&&i<=GameUtil.MAP_W&&j<=GameUtil.MAP_H){
                            spaceOpen(i,j);
                        }
                    }
                }
            }
        }
    }
    //失敗判定  t 表示失敗 f 未失敗
    boolean boom(){
        if(GameUtil.FLAG_NUM==GameUtil.RAY_MAX){
            for (int i = 1; i <=GameUtil.MAP_W ; i++) {
                for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                    if(GameUtil.DATA_TOP[i][j]==0){
                        GameUtil.DATA_TOP[i][j]=-1;
                    }
                }
            }
        }
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                if(GameUtil.DATA_BOTTOM[i][j]==-1&&GameUtil.DATA_TOP[i][j]==-1){
                    GameUtil.state = 2;
                    seeBoom();
                    return true;
                }
            }
        }
        return false;
    }
    //失敗顯示
    void seeBoom(){
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                //底層是雷,頂層不是旗,顯示
                if(GameUtil.DATA_BOTTOM[i][j]==-1&&GameUtil.DATA_TOP[i][j]!=1){
                    GameUtil.DATA_TOP[i][j]=-1;
                }
                //底層不是雷,頂層是旗,顯示差錯(cuò)旗
                if(GameUtil.DATA_BOTTOM[i][j]!=-1&&GameUtil.DATA_TOP[i][j]==1){
                    GameUtil.DATA_TOP[i][j]=2;
                }
            }
        }
    }
    //勝利判斷  t 表示勝利 f 未勝利
    boolean victory(){
        //統(tǒng)計(jì)未打開(kāi)格子數(shù)
        int count=0;
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                if(GameUtil.DATA_TOP[i][j]!=-1){
                    count++;
                }
            }
        }
        if(count==GameUtil.RAY_MAX){
            GameUtil.state=1;
            for (int i = 1; i <=GameUtil.MAP_W ; i++) {
                for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                    //未翻開(kāi),變成旗
                    if(GameUtil.DATA_TOP[i][j]==0){
                        GameUtil.DATA_TOP[i][j]=1;
                    }
                }
            }
            return true;
        }
        return false;
    }
    //打開(kāi)空格
    void spaceOpen(int x,int y){
        if(GameUtil.DATA_BOTTOM[x][y]==0){
            for (int i = x-1; i <=x+1 ; i++) {
                for (int j = y-1; j <=y+1 ; j++) {
                    //覆蓋,才遞歸
                    if(GameUtil.DATA_TOP[i][j]!=-1){
                        if(GameUtil.DATA_TOP[i][j]==1){GameUtil.FLAG_NUM--;}
                        GameUtil.DATA_TOP[i][j]=-1;
                        //必須在雷區(qū)當(dāng)中
                        if(i>=1&&j>=1&&i<=GameUtil.MAP_W&&j<=GameUtil.MAP_H){
                            spaceOpen(i,j);
                        }
                    }
                }
            }
        }
    }
    //繪制方法
    void paintSelf(Graphics g){
        logic();
        for (int i = 1; i <= GameUtil.MAP_W ; i++) {
            for (int j = 1; j <= GameUtil.MAP_H; j++) {
                //覆蓋
                if (GameUtil.DATA_TOP[i][j] == 0) {
                    g.drawImage(GameUtil.top,
                            GameUtil.OFFSET + (i - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.OFFSET * 3 + (j - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.SQUARE_LENGTH - 2,
                            GameUtil.SQUARE_LENGTH - 2,
                            null);
                }
                //插旗
                if (GameUtil.DATA_TOP[i][j] == 1) {
                    g.drawImage(GameUtil.flag,
                            GameUtil.OFFSET + (i - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.OFFSET * 3 + (j - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.SQUARE_LENGTH - 2,
                            GameUtil.SQUARE_LENGTH - 2,
                            null);
                }
                //差錯(cuò)旗
                if (GameUtil.DATA_TOP[i][j] == 2) {
                    g.drawImage(GameUtil.noflag,
                            GameUtil.OFFSET + (i - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.OFFSET * 3 + (j - 1) * GameUtil.SQUARE_LENGTH + 1,
                            GameUtil.SQUARE_LENGTH - 2,
                            GameUtil.SQUARE_LENGTH - 2,
                            null);
                }
            }
        }
    }
}

底層數(shù)字BottomNum類(lèi)

//底層數(shù)字類(lèi)
package com.sxt;

public class BottomNum {
    void newNum() {
        for (int i = 1; i <=GameUtil.MAP_W ; i++) {
            for (int j = 1; j <=GameUtil.MAP_H ; j++) {
                if(GameUtil.DATA_BOTTOM[i][j]==-1){
                    for (int k = i-1; k <=i+1 ; k++) {
                        for (int l = j-1; l <=j+1 ; l++) {
                            if(GameUtil.DATA_BOTTOM[k][l]>=0){
                                GameUtil.DATA_BOTTOM[k][l]++;
                            }
                        }
                    }
                }
            }
        }
    }
}

初始化地雷BottomRay類(lèi)

//初始化地雷類(lèi)
package com.sxt;

public class BottomRay {
    //存放坐標(biāo)
    int[] rays = new int[GameUtil.RAY_MAX*2];
    //地雷坐標(biāo)
    int x,y;
    //是否放置 T 表示可以放置 F 不可放置
    boolean isPlace = true;

    //生成雷
    void newRay() {
        for (int i = 0; i < GameUtil.RAY_MAX*2 ; i=i+2) {
            x= (int) (Math.random()*GameUtil.MAP_W +1);//1-12
            y= (int) (Math.random()*GameUtil.MAP_H +1);//1-12
            //判斷坐標(biāo)是否存在
            for (int j = 0; j < i ; j=j+2) {
                if(x==rays[j] && y==rays[j+1]){
                    i=i-2;
                    isPlace = false;
                    break;
                }
            }
            //將坐標(biāo)放入數(shù)組
            if(isPlace){
                rays[i]=x;
                rays[i+1]=y;
            }
            isPlace = true;
        }

        for (int i = 0; i < GameUtil.RAY_MAX*2; i=i+2) {
            GameUtil.DATA_BOTTOM[rays[i]][rays[i+1]]=-1;
        }
    }
}

工具GameUtil類(lèi)

//工具類(lèi):存放靜態(tài)參數(shù),工具方法
package com.sxt;
import java.awt.*;
public class GameUtil {
    //地雷個(gè)數(shù)
    static int RAY_MAX = 5;
    //地圖的寬
    static int MAP_W = 11;
    //地圖的高
    static int MAP_H = 11;
    //雷區(qū)偏移量
    static int OFFSET = 45;
    //格子邊長(zhǎng)
    static int SQUARE_LENGTH = 50;
    //插旗數(shù)量
    static int FLAG_NUM = 0;
    //鼠標(biāo)相關(guān)
    //坐標(biāo)
    static int MOUSE_X;
    static int MOUSE_Y;
    //狀態(tài)
    static boolean LEFT = false;
    static boolean RIGHT = false;
    //游戲狀態(tài) 0 表示游戲中 1 勝利 2 失敗
    static int state = 0;
    //倒計(jì)時(shí)
    static long START_TIME;
    static long END_TIME;
    //底層元素  -1 雷 0 空 1-8 表示對(duì)應(yīng)數(shù)字
    static int[][] DATA_BOTTOM = new int[MAP_W+2][MAP_H+2];
    //頂層元素  -1 無(wú)覆蓋 0 覆蓋 1 插旗 2 差錯(cuò)旗
    static int[][] DATA_TOP = new int[MAP_W+2][MAP_H+2];
    //載入圖片
    static Image lei = Toolkit.getDefaultToolkit().getImage("imgs/lei.png");
    static Image top = Toolkit.getDefaultToolkit().getImage("imgs/top.gif");
    static Image flag = Toolkit.getDefaultToolkit().getImage("imgs/flag.gif");
    static Image noflag = Toolkit.getDefaultToolkit().getImage("imgs/noflag.png");
    static Image face = Toolkit.getDefaultToolkit().getImage("imgs/face.png");
    static Image over = Toolkit.getDefaultToolkit().getImage("imgs/over.png");
    static Image win = Toolkit.getDefaultToolkit().getImage("imgs/win.png");
    static Image[] images = new Image[9];
    static {
        for (int i = 1; i <=8 ; i++) {
            images[i] = Toolkit.getDefaultToolkit().getImage("imgs/num/"+i+".png");
        }
    }
    static void drawWord(Graphics g,String str,int x,int y,int size,Color color){
        g.setColor(color);
        g.setFont(new Font("仿宋",Font.BOLD,size));
        g.drawString(str,x,y);
    }
}

總結(jié)

在使用Java編寫(xiě)掃雷小游戲時(shí)遇到了很多問(wèn)題,在解決問(wèn)題時(shí),確實(shí)對(duì)java的面向?qū)ο缶幊逃辛烁由钊氲睦斫?。雖然GUI現(xiàn)在并沒(méi)有很大的市場(chǎng),甚至好多初學(xué)者已經(jīng)放棄了學(xué)習(xí)GUI,但是利用GUI編程的過(guò)程對(duì)于培養(yǎng)編程興趣,深入理解Java編程有很大的作用。
本程序共封裝了五個(gè)類(lèi),分別是主類(lèi)GameWin類(lèi),繪制底層地圖和繪制頂層地圖的類(lèi)MapBottom類(lèi)和MapTop類(lèi),繪制底層數(shù)字的類(lèi)BottomNum類(lèi),以及初始化地雷的BottomRay類(lèi)和工具GameUtil類(lèi),用于存靜態(tài)參數(shù)和方法。
游戲的設(shè)計(jì)類(lèi)似windows掃雷,用戶(hù)在圖形化用戶(hù)界面內(nèi)利用鼠標(biāo)監(jiān)聽(tīng)事件標(biāo)記雷區(qū),左上角表示剩余雷的數(shù)量,右上角動(dòng)態(tài)顯示使用的時(shí)間。用戶(hù)可選擇中間組件按鈕重新游戲。
為了解決程序窗口閃動(dòng)的問(wèn)題,本程序采用了雙緩沖技術(shù)。

程序的總體界面布局:

項(xiàng)目結(jié)構(gòu):

程序測(cè)試:

到此這篇關(guān)于教你使用Java實(shí)現(xiàn)掃雷小游戲(最新完整版)的文章就介紹到這了,更多相關(guān)java掃雷小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java編寫(xiě)貪吃蛇小游戲

    java編寫(xiě)貪吃蛇小游戲

    貪吃蛇是經(jīng)典手機(jī)游戲,既簡(jiǎn)單又耐玩。通過(guò)控制蛇頭方向吃蛋,使得蛇變長(zhǎng),從而獲得積分。今天我們就來(lái)用java來(lái)實(shí)現(xiàn)下貪吃蛇小游戲,有需要的小伙伴可以參考下
    2015-03-03
  • Spring 4.1+JSONP的使用指南

    Spring 4.1+JSONP的使用指南

    在解釋JSONP之前,我們需要了解下”同源策略“,這對(duì)理解跨域有幫助?;诎踩脑?瀏覽器是存在同源策略機(jī)制的,同源策略阻止從一個(gè)源加載的文檔或腳本獲取或設(shè)置另一個(gè)源加載額文檔的屬性。說(shuō)的簡(jiǎn)單點(diǎn)就是瀏覽器限制腳本只能和同協(xié)議、同域名、同端口的腳本進(jìn)行交互。
    2016-04-04
  • Java中使用注解的實(shí)例詳解

    Java中使用注解的實(shí)例詳解

    注解(Annotation)是放在Java源碼的類(lèi)、方法、字段、參數(shù)前的一種特殊“注釋”,這篇文章主要介紹了Java中如何使用注解,需要的朋友可以參考下
    2023-06-06
  • Java中使用BigDecimal進(jìn)行浮點(diǎn)數(shù)運(yùn)算

    Java中使用BigDecimal進(jìn)行浮點(diǎn)數(shù)運(yùn)算

    這篇文章主要介紹了Java中使用BigDecimal進(jìn)行浮點(diǎn)數(shù)運(yùn)算,需要的朋友可以參考下
    2014-07-07
  • 淺談 java中ArrayList、Vector、LinkedList的區(qū)別聯(lián)系

    淺談 java中ArrayList、Vector、LinkedList的區(qū)別聯(lián)系

    ArrayList,Vector底層是由數(shù)組實(shí)現(xiàn),LinkedList底層是由雙線(xiàn)鏈表實(shí)現(xiàn),從底層的實(shí)現(xiàn)可以得出性能問(wèn)題ArrayList,Vector插入速度較慢,查詢(xún)速度較快,而LinkedList插入速度較快,而查詢(xún)速度較慢。再者由于Vevtor使用了線(xiàn)程安全鎖,所以ArrayList的運(yùn)行效率高于Vector
    2015-11-11
  • springboot jpa實(shí)現(xiàn)優(yōu)雅處理isDelete的默認(rèn)值

    springboot jpa實(shí)現(xiàn)優(yōu)雅處理isDelete的默認(rèn)值

    如果多個(gè)實(shí)體類(lèi)都有 isDelete 字段,并且你希望在插入時(shí)為它們統(tǒng)一設(shè)置默認(rèn)值時(shí)改怎么做呢,本文為大家整理了一些方法,希望對(duì)大家有所幫助
    2024-11-11
  • 基于IDEA創(chuàng)建SpringMVC項(xiàng)目流程圖解

    基于IDEA創(chuàng)建SpringMVC項(xiàng)目流程圖解

    這篇文章主要介紹了基于IDEA創(chuàng)建SpringMVC項(xiàng)目流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 高效數(shù)據(jù)傳輸?shù)拿孛芪淦鱌rotobuf的使用教程

    高效數(shù)據(jù)傳輸?shù)拿孛芪淦鱌rotobuf的使用教程

    Protobuf(Protocol?Buffers)是由?Google?開(kāi)發(fā)的一種輕量級(jí)、高效的數(shù)據(jù)交換格式,它被用于結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化和傳輸,本文主要介紹了它的具體使用方法,需要的可以參考一下
    2023-05-05
  • Java入門(mén)基礎(chǔ)之常規(guī)的命名方法和變量的值及其引用

    Java入門(mén)基礎(chǔ)之常規(guī)的命名方法和變量的值及其引用

    這篇文章主要介紹了Java的命名方法和變量的值及其引用,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • 詳解SpringMVC加載配置Properties文件的幾種方式

    詳解SpringMVC加載配置Properties文件的幾種方式

    這篇文章主要介紹了詳解SpringMVC加載配置Properties文件的幾種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02

最新評(píng)論

阿合奇县| 河池市| 彭山县| 巴林右旗| 昭觉县| 临高县| 武穴市| 红原县| 安徽省| 玉树县| 海阳市| 宝坻区| 汕尾市| 山东省| 项城市| 丹凤县| 那坡县| 通榆县| 天台县| 永胜县| 沽源县| 新田县| 永吉县| 惠东县| 吴旗县| 西华县| 萨迦县| 玉环县| 叙永县| 温州市| 双柏县| 凌源市| 九龙坡区| 油尖旺区| 卓资县| 青州市| 荣成市| 云霄县| 罗定市| 衡东县| 吉水县|