Java中一些常用的方法

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/10/29/6011198.html
-Advertisement-
Play Games

1.計算程式運行時常 2.文件讀寫 3.立flag 設置布爾變數,用來在程式運行時對一些邏輯進行標記。其中false和true需要自己定義其含義。因此在設置flag的時,需要註意false以及true對應的含義。否則這些邏輯上的錯誤很難被檢查出來。 4.使用HashMap 聲明myMap為HashM ...


1.計算程式運行時常

long start = System.currentTimeMillis();

…

…

…

long end = System.currentTimeMillis();

System.out.println("程式運行時常 : "+(end-start)+" ms");

2.文件讀寫

    String fileName = "/home/test";//定義寫文件路徑
    FileWriter writer = null;//文件讀寫流
    public void write_To_File(){
        writer = new FileWriter(fileName, true);
        try {
                   writer.write("Hello World!");
              } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     }

3.立flag

  設置布爾變數,用來在程式運行時對一些邏輯進行標記。其中false和true需要自己定義其含義。因此在設置flag的時,需要註意false以及true對應的含義。否則這些邏輯上的錯誤很難被檢查出來。

    boolean flag = true;
    …
    …
    If()
    }
    …
    /* 根據程式運行邏輯進行對flag的修改 */
    else{
    
  }    

4.使用HashMap

  聲明myMap為HashMAp類型

HashMap<String,String> myMap=new HashMap<String,String>();

  其中HashMap中的第一個參數,第二個參數為String

  可以使用HashMap來構造key,value一一對應的結構。

  例如:學號對應一個姓名

            

  

 

 

 

    則可以使用put來構造HashMap

myMap.put("1","張三");

myMap.put("2","李四");

myMap.put("3","王五");

myMap.put("4","趙六");

  可以使用get來查看key對應的value

myMap.get("1");//會返回張三

5.將excel的去重後內容放到list中

    String path = "/home/allNumber.csv";
    public static ArrayList<String> myList = new ArrayList<String>();//聲明list, 內容為String類型
    public static void createList(String path) throws IOException{
    BufferedReader reader = new BufferedReader(new FileReader(new File(path)));
            String line = "";
            while((line=reader.readLine())!=null){//賦值併進行判斷
                if(!myListlist.contains(line )){//去重
                    myList.add(line );
                }
            }
            reader.close();
    }

  首先聲明文件讀寫流,傳入參數path為文件路徑;

  while迴圈體中需要判斷是否已經到了文件的末尾,同時進行賦值操作;

  由於需要進行去重操作,只需要每次向myList中添加數據之前前進行判斷該數據是否已經存在;

  記住最後要將文件的讀寫流關閉 reader.close();

6.定時進行寫文件

  使用靜態方法

    public class test {    
        public static void executeFixedRate() throws IOException {
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
           /*
            * 參數1 new count() 表示運行的方法
            * 參數2 0 表示第一次調用等待 0ms 之後運行count中的run方法
            * 參數3 5000 表示之後每經過5000ms再次調用
            * 參數4 TimeUnit.MILLISECONDS 設置時間為毫秒
            */
            executor.scheduleAtFixedRate(new count(),0,5000,TimeUnit.MILLISECONDS);
        }
        static class count implements Runnable{
            
            private String fileName = "/home/test";
            private FileWriter writer = null;
            //設置日期格式
            private static DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            public void run(){//運行代碼   
                try {
                    writer = new FileWriter(fileName, true);
                    writer.write("Hello World"+df.format(new Date())+"\n");
                    writer.flush();
                    
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }   
        }
    
        public static void main(String[] args) throws Exception {
            test.executeFixedRate();
        }
 }

7.第二種定時寫文件

  使用Timer類

    public class test {    
    
        private static void executeFixedRate() {
            Timer timmerTask = new Timer();
            Calendar calEnviron = Calendar.getInstance();
            // 每00:00:00 開始執行
            calEnviron.set(Calendar.HOUR_OF_DAY, 0);
            calEnviron.set(Calendar.MINUTE, 0);
            calEnviron.set(Calendar.SECOND, 0);
            
            // date制定間
            Date dateSetter = new Date();
            dateSetter = calEnviron.getTime();
            // nowDate前間
            Date nowDateSetter = new Date();
            // 所間差距現待觸發間間隔
            long intervalEnviron = dateSetter.getTime() - nowDateSetter.getTime();
            if (intervalEnviron < 0) {
                calEnviron.add(Calendar.DAY_OF_MONTH, 1);
                dateSetter = calEnviron.getTime();
                intervalEnviron = dateSetter.getTime() - nowDateSetter.getTime();
            }
             timmerTask.schedule(new count(), intervalEnviron, 1 * 1000 * 60 * 60 * 24);
        }
        static class count implements Runnable{
            
            private String fileName = "/home/test";
            private FileWriter writer = null;
            //設置日期格式
            private static DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            public void run(){//運行代碼   
                try {
                    writer = new FileWriter(fileName, true);
                    writer.write("Hello World"+df.format(new Date())+"\n");
                    writer.flush();
                    
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }   
        }
        public static void main(String[] args) throws Exception {
            test.executeFixedRate();
        }
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • strlen(p): 能計算出p指向字元串的長度(以當前p的位置開始),不包含終止字元'\0'; p可以聲明為char* p或者char p[],這兩種形式strlen均能正確計算。 sizeof(p): sizeof是一個操作符,非函數,其值在編譯期確定,因此當p聲明為某一類型指針時,sizeof ...
  • 大家好,今天帶來的是自己實現的用C++完成基數排序.在數據結構,演算法分析和程式設計的學習過程中,我們經常也無法避免的要學到排序的演算法.排序演算法是程式設計過程中使用頻率極高的演算法之一,其輸入是一組無序的序列,要求以升序或者降序的方式輸出一組有序的序列.對於如二分查找等演算法,要求輸入是有序的序列,也就是 ...
  • 很多同學對於overload和override傻傻分不清楚,建議不要死記硬背概念性的知識,要理解著去記憶。 先給出我的定義: overload(重載):在同一類或者有著繼承關係的類中,一組名稱相同,參數不同的方法組。本質是對不同方法的稱呼。 override(覆寫):存在繼承關係的兩個類之間,在子類 ...
  • 標記名稱:flink [標簽簡介] [功能說明]:用於獲取友情鏈接,其對應後臺文件為"includetaglibflink.lib.php". [適用範圍]:全局標記,適用V55,V56,V57。 [參數說明]: [1]type:鏈接類型,值: a. textall 全部用文字顯示; b. text ...
  • // 首碼形式:增加然後取回值UPInt& UPInt::operator++(){ *this += 1; // 增加 return *this; // 取回值}// postfix form: fetch and incrementconst UPInt UPInt::operator++(in ...
  • 如下記錄一次作業: 很顯然,我這個應該屬於二逼青年版,會在以後更新文藝青年版的答案。 1、模仿sed,一個文件中,用新字元串替換老字元串。 2、查找、添加、刪除特定的內容 ...
  • 我的博客園博文地址:http://www.cnblogs.com/tenglongwentian/ Lucene,最新版是Lucene6.2.1,匹配的jdk版本是1.8正式版。這裡用jdk7最後一版,所以用Lucene5.3.3。 新建一個maven項目,如果不會可以參考前面的博文,前面的博文有專 ...
  • 以太坊是區塊鏈開發領域最好的編程平臺,而truffle是以太坊(Ethereum)最受歡迎的一個開發框架,這是我們第一篇區塊鏈技術文章介紹truffle的原因,實戰是最重要的事情,這篇文章不講原理,只搭建環境,運行第一個區塊鏈程式(Dapp)。 安裝truffle $ npm install -g ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...