導航:首頁 > 源碼編譯 > java數據分組演算法

java數據分組演算法

發布時間:2022-04-19 15:34:21

java 按日期分組 演算法

直接用SQL語句
select count(id) as 數量,day(date) as 生產日期 from table group by day(date) order by day(czrq)

如果庫里不止一個月的數據,那麼再加個where條件

❷ java數組按照相同的個數分組的實現,求大神!

//模擬一個序列
List<Double>doubles=newArrayList<>();
doubles.add((double)5);
doubles.add((double)4);
doubles.add((double)3);
doubles.add((double)5);
doubles.add(2.2);
doubles.add((double)4);


//定義兩個記錄的list,他們是同步的,一個記錄值,一個記錄出現次數
List<Double>star=newArrayList<>();
List<Integer>number=newArrayList<>();

//數字數量分組
for(doublei:doubles){
if(-1!=star.lastIndexOf(i)){
number.add(star.lastIndexOf(i),number.get(star.lastIndexOf(i))+1);
}else{
star.add(i);
number.add(1);
}
}

//列印出結果,得到的序列再根據需求進行處理
for(inti=0;i<star.size();i++){
System.out.println("==========");
System.out.println("star:"+star.get(i));
System.out.println("number:"+number.get(i));
}

❸ java怎樣將集合中的數值數據分區間統計個數:例如(0-1000)有幾個人數據,1000-2000有幾個數據

集合分組統計處理, 實現的方法很多,簡單的寫幾種方法供參考;(理解後,自行擴展完善)

方法一:(Java8流處理粗略版) 該版本存在的問題:有些區間沒有數據,就不列印顯示該區間

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo{
publicstaticvoidmain(String[]args){

ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流處理把數字分組
Map<String,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
return"區間:["+num/space*space+","+(num/space+1)*space+")";//分組規則
}));
map.forEach((k,v)->{
System.out.println(k);
System.out.println(" "+v.size()+"個數據");
});
}
}

方法二:(Java8流處理詳細版) 就算有的區間是0個數據,照樣列印出來

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo2{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流處理把數字分組
Map<Integer,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
returnnum/space;//分組規則
}));

//獲取集合里的最大值
Optional<Integer>maxop=list.stream().collect(Collectors.maxBy(Integer::compareTo));
intmax=maxop.orElse(0);
//計算出區間的數量
intgroups=max%space==0?max/space:max/space+1;
//列印結果
for(inti=0;i<groups;i++){
System.out.println("區間:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+(map.get(i)==null?0:map.get(i).size())+"個數據");
//System.out.println(" "+map.get(i));//把數據列印出來
}
}
}

方法三:(比較傳統的方法)

importjava.util.*;

publicclassNumberDemo3{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

fun(list,space);
}
privatestaticvoidfun(ArrayList<Integer>list,intspace){
Collections.sort(list);//排序
intmax=list.get(list.size()-1);//取得最大值
intgroups=max%space==0?max/space:max/space+1;//取得區間的數量
HashMap<Integer,ArrayList<Integer>>map=newHashMap<Integer,ArrayList<Integer>>();//存區間和該區間的數字
for(inti=0;i<groups;i++){
map.put(i,newArrayList<>());
}
//把元素添加到指定的區間
for(inti=0;i<list.size();i++){
map.get(list.get(i)/space).add(list.get(i));
}
//列印結果
for(inti=0;i<groups;i++){
System.out.println("區間:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+map.get(i).size()+"個數據");
//System.out.println(" "+map.get(i));//把數據列印出來
}
}
}

測試效果如下

區間:[0,1000)
有5個數據
區間:[1000,2000)
有0個數據
區間:[2000,3000)
有1個數據
區間:[3000,4000)
有2個數據
區間:[4000,5000)
有2個數據

❹ java 數據分組

  1. 輸入兩個文件,最好是選擇輸入文件而不是在代碼里指定輸入文件(這個我一直沒弄好。)


    可以這樣解決,用java中的swing寫一個file,然後找到你要的那個文件,接著將其完整的路徑用string保存下來,就可以了。



2.輸出在samplelist中存在,在a.txt中出現的一組數據(組的定義是指看起來是描述這個事物的一組數據,這個我一直沒弄懂該怎麼分組)


這個我不是很明白

❺ java中的演算法,一共有多少種,哪幾種,怎麼分類。

就好比問,漢語中常用寫作方法有多少種,怎麼分類。

演算法按用途分,體現設計目的、有什麼特點
演算法按實現方式分,有遞歸、迭代、平行、序列、過程、確定、不確定等等
演算法按設計范型分,有分治、動態、貪心、線性、圖論、簡化等等

作為圖靈完備的語言,理論上」Java語言「可以實現所有演算法。
「Java的標准庫'中用了一些常用數據結構和相關演算法.

像apache common這樣的java庫中又提供了一些通用的演算法

❻ 求java分組合計演算法

這種統計數據直接就能從資料庫中查詢出來,用sum函數計算求和,用group by進行分組

❼ java 字元串統計分組演算法求教

public static void main(String[] args) {
String str = "02 07 13 20 25 27 12 15 16 26 29 31 04 17 23 27 28 32 04 08 16 24 30 32 01 04 05 18 19 25";
String[] strs = str.split(" ");
List<Integer> intList = new ArrayList<Integer>();
for(String s : strs) {
intList.add(Integer.parseInt(s));
}
Collections.sort(intList);
System.out.println("排序後的字元:" + intList );

Map<Integer, List<Integer>> find = new LinkedHashMap<Integer, List<Integer>>();
int max = intList.get(intList.size()-1); //定義要查找的區間
int min = 1;
while(min <= max) {
int count = 0;
for(int i : intList) {
if(min == i) {
count++; //發現次數
}
}
List<Integer> group = find.get(count);
if(group == null)
group = new ArrayList<Integer>();
group.add(min);
find.put(count, group);
min++;
}
for(int count : find.keySet()) {
System.out.println("出現"+count+"次的字元:" + find.get(count));
}
}

沒有注重性能,只是簡單的實現功能,提供參考

❽ Java 數據分組問題

分組數為3,那麼就是兩個指針,劃分的三個區域即為所求。

好久沒做過OJ上的題目了,很水,小范圍數據能過,有什麼問題一起探討。

/*
*你的是這個數據
53
12345
*/


importjava.util.Scanner;

publicclassMain
{
publicstaticintN;
publicstaticint[]array;
publicstaticintP;
publicstaticvoidmain(String[]args)
{
Scannerscan=newScanner(System.in);
//N;數組長度
N=scan.nextInt();
//P:集合數
P=scan.nextInt();
array=newint[N];
for(inti=0;i<N;i++)
{
array[i]=scan.nextInt();
}
//不好確定循環次數,用遞歸解決
startDivide(0,P-1,"");
}

publicstaticvoidstartDivide(intstart,intdeep,Stringanswer)
{
if(deep==-1)
{
//將剩餘的輸出
for(inti=start;i<Math.min(N-deep,array.length);i++)
{
answer+=""+array[i]+"";
}
System.out.println(answer+"}");
}
else
{
//這步貌似有問題?
if(!answer.equals(""))
{
answer+="}";
}
if(answer.equals("")||answer.charAt(answer.length()-1)=='}')
{
answer+="{";
}
for(inti=start;i<N-deep;i++)
{
answer+=""+array[i]+"";
startDivide(i+1,deep-1,answer);
if(deep==0)
break;
}
}
}
}

❾ Java 隨機分組

有一組數據,然後你又每組需要分4個人,到底是一組數據還是多組數據呀,不知道你是不是想把一組 數據分成4份?如果是,給你個思路 ,假如你的這組數據是一個字元串數組a,你就循環a的長度次數,每次都產生一個0到a長度之間的隨機數,強轉成int,並記錄到一個新數組里,這樣一直循環取,當然,如果新數組里已經記錄的數字不要重復記錄,保證這個新數組里裝的是唯一的數,並且這些數組里的數字,是你字元串數組的a的下標,然後循環新數組,按新數組里的值做下標去取a數組里的字元,a長度假如是20的話,每隔五個就放在一起,這樣分成四份,而且取的順序是新數組的下標來決定的,而新數組的下標又是隨機生成的,。。。這樣就達到隨機將這組數據分成份了

閱讀全文

與java數據分組演算法相關的資料

熱點內容
useradd命令linux 瀏覽:577
語言編程源碼分析 瀏覽:276
溫10怎麼設計加密文件 瀏覽:452
python源碼保護資料庫密碼 瀏覽:992
組織伺服器是什麼玩意 瀏覽:453
linux啟動失敗的原因 瀏覽:179
百度演算法面試 瀏覽:926
谷歌框架伺服器地址 瀏覽:380
女程序員藍天白雲 瀏覽:832
鋼鐵命令解說 瀏覽:254
什麼購物app是正品 瀏覽:480
安卓系統斷網怎麼回事 瀏覽:458
黑馬程序員第9章 瀏覽:705
汽車編程所用的函數 瀏覽:453
雲管理伺服器如何注冊 瀏覽:210
linux下重啟網卡 瀏覽:120
樂橙怎麼加密 瀏覽:264
幸識是個什麼樣的app 瀏覽:54
程序員直男認口紅 瀏覽:37
雕刻機的編程點怎麼算 瀏覽:643