永发信息网

JAVA的String 数组拆分问题,急急

答案:3  悬赏:40  手机版
解决时间 2021-04-14 04:24
String[] m ={"a123","c321","a123","b456","c321","b456"}

想把数组m根据相同的元素拆分成3个新的数组:

{"a123","a123"} {"b456","b456"} {"c321","c321"}

请高人给下具体的实现代码,能给的全部分都给了哈!
最佳答案
import java.util.*;
public class Test {
public static void main(String args[]) {

String[] m ={"a123","c321","a123","b456","c321","b456"} ;
String [][]retArr=getGroupArray(m) ;
for(int i=0;i<retArr.length;i++)
{
for(int j=0;j<retArr[i].length;j++)
{
System.out.print(retArr[i][j]+" ");
}
System.out.println();
}
}

public static String [][] getGroupArray(String [] m)
{
ArrayList value=new ArrayList();
ArrayList num=new ArrayList();
for(int i=0;i<m.length;i++)
{
int index=getIdx(value,m[i]);
if(index==-1)
{
value.add(m[i]);
num.add("1");
}
else
{
num.set(index, String.valueOf(Integer.parseInt((String)num. get(index))+1));
}

}
String [][]retArr=new String[value.size()] [];
for(int i=0;i<value.size();i++)
{
int count=Integer.parseInt((String)num.get(i));
retArr[i]=new String[count];
for(int j=0;j<count;j++)
{
retArr[i][j]=(String)value.get(i);
}

}
return retArr;
}
public static int getIdx(ArrayList arr,String value)
{
for(int i=0;i<arr.size();i++)
{
if((String)arr.get(i)==value)
{
return i;
}
}
return -1;
}
}
全部回答
package org.info.demo; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class Group { public static void main(String[] args) { String[] m = { "a123", "c321", "a123", "b456", "c321", "b456", "c321" }; Map<String, List<String>> map = new HashMap<String, List<String>>(); List<String> als = new ArrayList<String>(); for (int i = 0; i < m.length; i++) { if (map.containsKey(m[i])) { map.get(m[i]).add(m[i]); } else { als = new ArrayList<String>(); als.add(m[i]); map.put(m[i], als); } } for (Iterator iter = map.values().iterator(); iter.hasNext();) { als = (List) iter.next(); Object[] objs = als.toArray(); for (int i = 0; i < objs.length; i++) { System.out.print(objs[i] + "\t"); } System.out.println(); } } }
HashMap<String,LinkList<String>> counter = new HashMap<String,LinkList<String>>(); for(int i = 0 ; i < array.length ; i++){ if(counter.containsKey(array[i])){ counter.get(array[i]).add(i); }else{ LinkList<String> x = new LinkList<String>(); x.add(array[i]); coutner.put(array[i],x); } } for (Iterator iter = counter .entrySet().iterator(); iter.hasNext();) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue();//被拆分出来的数组 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大家帮我推荐、哪个点卡平台有数据包的啊
地震震级的大小取决于A.地震距震中的远近B.地
如何自制一个水力发电系统
CF怎样可以亮图标
这段时间觉得他不爱理我 男友说要和我静静两
aquery中delete使用问题delphi
坏小仔怎么去啊,有知道地址的么
长期吃素的好处和坏处?
赵雅芝有几个孩子?
学习的作用是什么啊
“一径”什么意思?
单选题下列四个模型中,线性相关性最强的是A.
水很干净么?
人可以不睡觉吗??
QQ黑钻可以点亮什么图标?
推荐资讯
QQ能连登吗?
隐形眼镜。芭比爱
车之梦加盟连锁店的加盟方式!加盟费用?
洛阳晶海牡丹花卉市场在哪里啊,我有事要去这
QQ寻仙电信开的第一个区 是那个区?
世界四大洋中最寒冷的是________,跨经度最广
元旦30人集体舞以什么舞种表演好?请求几个意
桃树与桃花树?的区别在哪里?
单选题四月份,我县对九年级学生进行了中考体
欺诈发行股票,债券罪有哪些特征
怎样才能好好的当一个正式的漫画家、
单选题Asweknow,the2008OlympicGameswill
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?