Java在OJ時(shí)運(yùn)行超時(shí)的問題解決方案
Java語言什么都好,就是在OJ的時(shí)候真的是太慢了,今天來講解一種讓Java運(yùn)行速度快速提高的方法。
1.Scanner
scanner類在運(yùn)行時(shí)候真的是巨慢無比,尤其是當(dāng)要讀入很多數(shù)據(jù)的時(shí)候如果用scanner,那一定能讓你感受到絕望看一個(gè),所以在讀入數(shù)據(jù)時(shí)我們一般使用BufferedReader來讀取數(shù)據(jù),先來看一個(gè)對比圖:
在讀入10,000,000 個(gè)整數(shù)時(shí)所需時(shí)間對比:

在讀入10,000,000 個(gè)浮點(diǎn)數(shù)時(shí)所需時(shí)間對比:

可以看到scanner用時(shí)差不多是BufferedReader的10到20倍。
如何使用BufferedReader呢?
class Reader {
static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer tokenizer = new StringTokenizer("");
static String nextLine() throws IOException{// 讀取下一行字符串
return reader.readLine();
}
static String next() throws IOException {// 讀取下一個(gè)字符串
while (!tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(reader.readLine());
}
return tokenizer.nextToken();
}
static int nextInt() throws IOException {// 讀取下一個(gè)int型數(shù)值
return Integer.parseInt(next());
}
static double nextDouble() throws IOException {// 讀取下一個(gè)double型數(shù)值
return Double.parseDouble(next());
}
}其中nextLine對應(yīng)Scanner.nextLine();
next() 對應(yīng)Scanner.next();
nextInt() 對應(yīng)Scanner.nextInt() ;
nextDouble() 對應(yīng)Scanner.nextDouble() ;
2.String
當(dāng)我們經(jīng)常要對一個(gè)字符串進(jìn)行修改時(shí),不要使用String類,因?yàn)镾tring為靜態(tài),添加修改String會(huì)極其耗時(shí),所以要使用StringBuilder()
StringBuilder s=new StringBuilder(); //建立StringBuilder的兩種方式
StringBuilder s1=new StringBuilder("Adam");
s.append("hahaha"); //在字符串末尾添加字符串
s.insert(3,"hhh"); //在字符串中的位置插入字符串
s.setCharAt(1, 's'); //將字符串中指定位置字符替換
String s3=s.toString(); //轉(zhuǎn)換為String到此這篇關(guān)于Java在OJ時(shí)運(yùn)行超時(shí)的問題解決方案的文章就介紹到這了,更多相關(guān)ava在OJ時(shí)運(yùn)行超時(shí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)
下面小編就為大家?guī)硪黄猨ava POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(28)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
TraceIdPatternLogbackLayout日志攔截源碼解析
這篇文章主要為大家介紹了TraceIdPatternLogbackLayout日志攔截源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
java通過jni調(diào)用opencv處理圖像的方法
今天小編就為大家分享一篇java通過jni調(diào)用opencv處理圖像的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
SpringBoot設(shè)置接口超時(shí)的方法小結(jié)
這篇文章主要介紹了SpringBoot設(shè)置接口超時(shí)的方法小結(jié),包括配置文件,config配置類及相關(guān)示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
java?SpringBootWeb請求響應(yīng)舉例詳解
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡化Spring的一種快速開發(fā)的腳手架,這篇文章主要給大家介紹了關(guān)于java?SpringBootWeb請求響應(yīng)的相關(guān)資料,需要的朋友可以參考下2024-05-05
SpringBoot項(xiàng)目調(diào)優(yōu)及垃圾回收器的比較詳解
這篇文章主要介紹了SpringBoot項(xiàng)目調(diào)優(yōu)及垃圾回收器的比較詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
JAVA基礎(chǔ)之?dāng)?shù)組和集合區(qū)別對比分析
文章主要介紹了Java中數(shù)組和集合的基本概念、使用方法以及它們之間的區(qū)別,文章還探討了不可變集合的創(chuàng)建方式及其線程安全和不可篡改的優(yōu)勢,感興趣的朋友跟隨小編一起看看吧2025-11-11

