Java從控制檯讀取資料,輸入流System.in的幾種方法效率比較
這是一道PTA上關於複雜度演算法的題目——最大子列和問題,程式簡單。
我分別用
1)構造Scanner物件:Scanner in = new Scanner(System.in);
2)構造BufferedReader物件:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
3)直接使用System.in.read()讀取從控制檯輸入的位元組三種方法,來測試程式執行效率。
例如,其中的一個程式程式碼如下(其餘兩個只是讀入資料的方式有差異):
而,1)、2)、3)的執行結果分別如下:import java.io.*; public class Main { public static void main(String...strings) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine(); String s = br.readLine().trim(); String[] nums = s.split(" "); int thisSum = 0; int maxSum = 0; for(int i = 0; i < nums.length; i++) { thisSum += Integer.parseInt(nums[i]); if(thisSum > maxSum) maxSum = thisSum; else if(thisSum < 0) thisSum = 0; } System.out.println(maxSum); } }
可以發現,使用Scanner類的物件在讀取輸入資料方面雖然很方便,但是執行效率低,資料量越大,差異越明顯,並且佔用記憶體空間也大。
而BufferedReader和System.in則無明顯區別,但是BufferedReader在讀入資料方面上的處理會稍微簡便些。
相關推薦
Java從控制檯讀取資料,輸入流System.in的幾種方法效率比較
這是一道PTA上關於複雜度演算法的題目——最大子列和問題,程式簡單。 我分別用 1)構造Scanner物件:Scanner in = new Scanner(System.in); 2)構造BufferedReader物件:BufferedReader br = new B
第一篇 部落格:java從資料庫讀取資料,並寫入到excel表格中
今天,組長分配了查詢資料庫記錄,並把這些記錄寫入到excel表格中,以前沒有嘗試過,借鑑了一些別人的程式碼,最終實現了功能,寫一篇部落格,總結一下這個過程。1.準備需要用到的jar包 1.jxl.jar 2.mysql-connector-java-5.1.
Java呼叫R ,從資料庫讀取資料,用R根據讀取的資料生成圖片儲存
Java呼叫R 以及用R生成的圖片儲存 使用 png()可以保證圖片質量 有人說繪製的圖片上有中文會出現亂碼,其實設定下字型就好了 family=‘STXihei’ Java呼叫R 以及用R生成的圖片儲存 Rserve的配置和啟動: ①安裝Rserve包。
java從資料庫讀取選單,遞迴生成選單樹
首先看一下選單的樣子 根據這個樣子我們定義選單類 public class Menu { // 選單id private String id; // 選單名稱 private String name; // 父
JAVA從控制檯讀資料的幾種方法
1. 使用標準輸入流:system.in (JDK 1.4 及以下版本唯一的讀取方法) System.in.read()一次只讀入一個位元組資料,返回一個整數,且必須初始化 其他型別資料需要手工轉換 讀取過程必須捕獲IOException //int read =
Java從鍵盤讀取資料的三種方式
1.讀取單個字元: 從輸入流中讀取資料的下一個位元組,返回0~255範圍內的int型位元組值,如果達到輸入流的末尾,則返回-1。所以讀取char型別時需要將int型別轉換成char型別 Syst
[Java] 從控制檯讀取字元和字串
import java.util.Scanner; Scanner input = new Scanner(System.in); 讀取字串 String str = input.next(); 讀取字元 String s = input.nextLine(
springMVC+webUploader從後臺讀取資料,回顯圖片,超過三張不再新增
<script type="text/javascript">$(function(){var data = ${photoList};if(data){for(var i in data){$('#fileList').append('<li id="K
Flume從Kafka讀取資料,並寫入到Hdfs上
需求:kafka有五個主題 topic topic-app-startuptopic topic-app-errortopic topic-app-eventtopic topic-app-usagetopic topic-app-pageflume讀取Kafka 5個主題
java後臺list集合傳值到前臺,再取值的幾種方法
1.在jsp頁面中巢狀 java程式碼: 首先jsp頁面中匯入java的工具類 <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEnco
從資料庫中匯出資料成Dataframe格式兩種方法效率比較
方法1: import pymysql import pandas as pd import time import xlrd first = time.time() #在資料庫中操作150s,在python中操作320s #方法1 con = pymysql.connect(host="
java讀取寫入檔案幾種方式效率比較
public class ReadTxtJson {public static String readTxtFile(String FileName) throws Exception {BufferedInputStream bufferedInputStream = n
java算法面試題:排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。選擇冒泡快速集合至少4種方法排序
算法 err div println rda print 算法面試 ++ 快速排序 package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util
【JS】深拷貝與淺拷貝的區別,實現深拷貝的幾種方法
如何區分深拷貝與淺拷貝,簡單點來說,就是假設B複製了A,當修改A時,看B是否會發生變化,如果B也跟著變了,說明這是淺拷貝,拿人手短,如果B沒變,那就是深拷貝,自食其力。 此篇文章中也會簡單闡述到棧堆,基本資料型別與引用資料型別,因為這些概念能更好的讓你理解深拷貝與淺拷貝。 我們來舉個淺拷貝例
C/C++ 中 int 轉 string,string 轉 int 的幾種方法
C int 轉 string sprintf int a = 1; char strDst[256] = {0}; sprintf_s(strDst,256,"%d",a); itoa int
Android開發獲取GPS位置,包含apn\wifi\gps 幾種方法
1.gps定位: 優點:最簡單的手機定位方式當然是通過GPS模組(現在大部分的智慧機應該都有了)。GPS方式準確度是最高的 缺點1.比較耗電; 2.絕大部分使用者預設不開啟GPS模組; 3.從GPS模組啟動到獲取第一次定位資料,可能需要比較長的時間; 4.室內幾乎
Android開發獲取GPS位置,包含基站\wifi\gps 幾種方法
1.gps定位: 優點:最簡單的手機定位方式當然是通過GPS模組(現在大部分的智慧機應該都有了)。GPS方式準確度是最高的 缺點1.比較耗電; 2.絕大部分使用者預設不開啟GPS模組; 3.從GPS模組啟動到獲取第一次定位資料,可能需要比較長的時間;
html輸入空行的幾種方法
html空行有兩種方法可以見到實現,無需使用CSS樣式即可實現段落空行,上下文段間隔空間。 一、使用p段落標籤空行 - TOP p語法 <p>第一段</p> p是段落標籤,文章段落前使用<p>結束使用</p>,
讀取Spring的配置檔案applicationContext.xml幾種方法
1).利用ClassPathXmlApplicationContext,這種方式配置檔案應該放在類路徑下,否則Spring將找不到該檔案。 Java程式碼: ApplicationContext ctx=new ClassPathXmlApplicationContext("
實現瀑布流佈局的幾種方法
本文分別用原生JS與JQ框架寫出瀑布流佈局的方法 首先引庫: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>我的瀑