Java編程實(shí)現(xiàn)用hash方法切割文件
Hash,一般翻譯做“散列”,也有直接音譯為“哈?!钡?,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)唯一的確定輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
如果有大型數(shù)據(jù)文件(如每行為url或者ip或者單詞等的),以G為單位的,處理的時(shí)候需先切分。普通切分方法直接根據(jù)數(shù)據(jù)條數(shù)切分,得到的每個(gè)文件大小相近。
但是有時(shí)需要將相同數(shù)據(jù)放到相同文件中??梢允褂胔ash切分法。
public class Test {
static int HASHLEN = 1000;
public static void main(String[] args) {
// TODO Auto-generated method stub
String words [] = {"yes" ,"an" ,"go"};
for(String word:words){
int temp = hash(word.toCharArray());
System.out.println(temp);
}
}
public static int hash(char[] word) {
int index = 0;
int i=0;
while(i<word.length) {
index += index * 31 + word[i];
i++;
}
return index % HASHLEN;
}
}
總結(jié)
以上就是本文關(guān)于Java編程實(shí)現(xiàn)用hash方法切割文件的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。
相關(guān)文章
springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新
這篇文章主要介紹了springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新,問(wèn)題描述和解決思路給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-04-04
Java?HashMap詳解及實(shí)現(xiàn)原理
Java?HashMap是Java集合框架中最常用的實(shí)現(xiàn)Map接口的數(shù)據(jù)結(jié)構(gòu),它使用哈希表實(shí)現(xiàn),允許null作為鍵和值,可以存儲(chǔ)不同類(lèi)型的鍵值對(duì),在Java中,HashMap被廣泛應(yīng)用于各種場(chǎng)景,如緩存、數(shù)據(jù)庫(kù)連接池、路由器等,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-05-05
Spring中的注解@Autowired實(shí)現(xiàn)過(guò)程全解(@Autowired 背后的故事)
這篇文章主要介紹了Spring中的注解@Autowired實(shí)現(xiàn)過(guò)程全解,給大家聊聊@Autowired 背后的故事及實(shí)現(xiàn)原理,需要的朋友可以參考下2021-07-07
Java Exchanger并發(fā)類(lèi)使用方法
這篇文章主要介紹了Java Exchanger并發(fā)類(lèi)使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
SpringBoot2底層注解@Configuration配置類(lèi)詳解
這篇文章主要為大家介紹了SpringBoot2底層注解@Configuration配置類(lèi)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
idea顯示springboot多服務(wù)啟動(dòng)界面service操作
這篇文章主要介紹了idea顯示springboot多服務(wù)啟動(dòng)界面service操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
SpringBoot實(shí)現(xiàn)ImportBeanDefinitionRegistrar動(dòng)態(tài)注入
在閱讀Spring Boot源碼時(shí),看到Spring Boot中大量使用ImportBeanDefinitionRegistrar來(lái)實(shí)現(xiàn)Bean的動(dòng)態(tài)注入,它是Spring中一個(gè)強(qiáng)大的擴(kuò)展接口,本文就來(lái)詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2024-02-02
spring注解如何為bean指定InitMethod和DestroyMethod
這篇文章主要介紹了spring注解如何為bean指定InitMethod和DestroyMethod,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

