A. 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個數據
B. java 怎樣分組
你好,提問者:
1、J2SE:為java基礎部分。用於桌面應用程序。
2、J2EE:網頁系統開發。目前最流行的技術。
3、J2ME:手機系統、移動設備的開發。
C. java如何對一堆鍵值對數據分組
要實現什麼功能`按什麼要求分組``有什麼樣數據?
D. Java 對數據分組
把從資料庫讀出來的ResultSet 傳入這個方法
public static Map<Long, List<Long>> orgnaizeData(ResultSet rs) {
Map<Long, List<Long>> result = null;
try {
if (rs.getRow() > 0) {
result = new HashMap<Long, List<Long>>();
while (rs.next()) {
Long key = rs.getLong(1);
Long value = rs.getLong(2);
if (result.containsKey(key)) {
result.get(key).add(value);
} else {
List<Long> valueList = new ArrayList<Long>();
valueList.add(value);
result.put(key, valueList);
}
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
E. java 數據分組
輸入兩個文件,最好是選擇輸入文件而不是在代碼里指定輸入文件(這個我一直沒弄好。)
可以這樣解決,用java中的swing寫一個file,然後找到你要的那個文件,接著將其完整的路徑用string保存下來,就可以了。
2.輸出在samplelist中存在,在a.txt中出現的一組數據(組的定義是指看起來是描述這個事物的一組數據,這個我一直沒弄懂該怎麼分組)
這個我不是很明白
F. java list分組
沒明白你要的目的. 是想用list 集合來輸出結果.還是在資料庫里查詢出 這樣格式的結果.
如果是在java 後台.可以先創建Map 集合.Map<String,List<Object>> key代表 顏色 及尺寸. value 是一個List 集合.list 中存儲 紅-1 綠-2 藍-3 這樣的元素..
G. java開發中這種字元串數據歸納分組用什麼技術比較快
Java現在有的最多的是JDBC和Hibernater;
而Hibernater的底層也是用JDBC來實現的。
在數據量 很大 的時候,Hibernater可能會有效率問題。那是就選用JDBC來實現。
但是當數據量 特別大 是,JDBC可能也會有效率問題,因為JDBC是用Java實現的。速度上還是有問題的。
那是又會使用其他的方式來直接對資料庫經行操作。
H. java截取字元串中的數字,並且分組
用正則表達式按數字和中文的交界處切分字元串,就可以實現你的要求,完整的Java程序如下
public class F{
public static void main(String[] args){
String str="魚豆腐20海帶3掌中寶8雞翅2可樂2";
String[] s=str.split("(?<=[0-9])(?=[u4e00-u9fa5])");
for(int i=0;i<s.length;i++){
System.out.println(s[i]);
}
}
}
I. Java 隨機分組
有一組數據,然後你又每組需要分4個人,到底是一組數據還是多組數據呀,不知道你是不是想把一組 數據分成4份?如果是,給你個思路 ,假如你的這組數據是一個字元串數組a,你就循環a的長度次數,每次都產生一個0到a長度之間的隨機數,強轉成int,並記錄到一個新數組里,這樣一直循環取,當然,如果新數組里已經記錄的數字不要重復記錄,保證這個新數組里裝的是唯一的數,並且這些數組里的數字,是你字元串數組的a的下標,然後循環新數組,按新數組里的值做下標去取a數組里的字元,a長度假如是20的話,每隔五個就放在一起,這樣分成四份,而且取的順序是新數組的下標來決定的,而新數組的下標又是隨機生成的,。。。這樣就達到隨機將這組數據分成份了
J. 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;
}
}
}
}