有个Student类型的数组。Student[] sArray = Student[100];
Student的属性有学号num,姓名name。比如这个sArray里面含有相同的学生(即学号和姓名都相同)。
如何去掉数组相同的元素
HashSet<Student> set = new HashSet<Student>();
for(Student obj: s){
set.add(obj);
}
Student[] s2 = set.toArray(new Student[set.size()]);
for(int j=0;j<s2.length;j++)
{
System.out.print(s2[j].name+s2[j].id);
}
//我是这么写的,为什么最后还是输出了三个元素(原来的数组s长度为三,有两个重复的元素)
比如现在我得到了这个set,我应该怎么把它变成一个student数组呢,对这个不熟悉啊
追答 HashSet<Student> set = new HashSet<Student>();能不能把第二种方法具体的写出来呢
追答我用Map写地:
public class Students
{
private String num;
private String name;
public static void main(String[] args)
{
List stuList=new ArrayList();
Map stuMap=new HashMap();
Students st1=new Students();
st1.setNum("001");
st1.setName("jay");
Students st2=new Students();
st2.setNum("001");
st2.setName("jay");
Students st3=new Students();
st3.setNum("002");
st3.setName("jay");
stuList.add(st1);
stuList.add(st2);
stuList.add(st3);
for(Students stu:stuList)
{
//将学号与姓名接连做为key值,Students做为值
stuMap.put(stu.getNum()+stu.getName(),stu);
}
Set set=stuMap.keySet();//获取Map里的所有key值集合
for(String key:set)//遍历key
{
//根据key值从stuMap取出相应的Students信息
Students students=stuMap.get(key);
System.out.println(students);
}
}
//getter and setter
些处省略......
//重写toString方法
public String toString()
{
return "num:"+num+" name:"+name;
}
}
不需要看学号,只需要比较名字的话怎么办,只要名字相同的就去掉,并且最后要得到一个数组。(因为学生的属性还有别的,把学生当做一个object)
追答public class DistinctObject {报了个错,Student cannot be cast to java.lang.Comparable?