最近在写一些东西的时候突然遇到以下问题:
比如,一组数{1,1,2,3,4,5,5,3},怎么从这组数中取出相同的数并且保证取出的数当做此数组的key,例如上述数组经过取之后变成{1,{1,1}},{2,{2}},{3,{3,3},{4,{4}},{5,{5,5}},并且计算出每组数组的长度
下面贴出代码:
public class Test {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
HashMap<String, ArrayList<String>> map=new HashMap<>();
list.add("1");
list.add("2");
list.add("3");
list.add("5");
list.add("2");
list.add("3");
list.add("7");
list.add("8");
list.add("3");
list.add("5");
list.add("2");
list.add("3");
list.add("7");
int deg;
for(int i=0;i<list.size();i++){
ArrayList<String> list2=new ArrayList<>();
for(int j=i+1;j<list.size();j++){
if (list.get(i).equals(list.get(j))) {
list2.add(list.get(j));
list.remove(j);
}
}
map.put(list.get(i), list2);
}
for (Map.Entry entry:map.entrySet()) {
ArrayList<String> list1=new ArrayList<>();
String string=entry.getValue().toString();
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
//System.out.println(string.length());
if (string!=null&&string.length()!=0&&string!="[]") {
String s=string.substring(1,string.length()-1);
//正则表达式,以,空格或者空格为分割符
String a[]=s.split(", | ");
for(int i=0;i<a.length;i++){
list1.add(a[i]);
//System.out.println(a[i]);
}
System.out.println("此数组的长度:"+list1.size());
}else {
System.out.println("此数组长度为0");
}
}
}
}
结果为:
key=1,value=[]
此数组长度为0
key=2,value=[2, 2]
此数组的长度:2
key=3,value=[3, 3, 3]
此数组的长度:3
key=5,value=[5]
此数组的长度:1
key=7,value=[7]
此数组的长度:1
key=8,value=[]
此数组长度为0