下面有一个javabean
private String code = "";
private String name = "";
private String comefrom ="";//来自何方
public Student(){}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String code,String comefrom,String name){
this.code = code;
this.name = name;
this.comefrom = comefrom;
}
public String getComefrom() {
return comefrom;
}
public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
}
然后我定义了一个List,并在里面放了student对象
List list=new ArrayList();
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三"));
我现在想在控制台打出下面的结果:张三:重复数是4个,code是001+002+007+008
李四:重复数是2个,code是003+004
王五:重复数是1个,code是005
赵六:重复数是1个,code是006请个位高手帮忙!谢谢
private String code = "";
private String name = "";
private String comefrom ="";//来自何方
public Student(){}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String code,String comefrom,String name){
this.code = code;
this.name = name;
this.comefrom = comefrom;
}
public String getComefrom() {
return comefrom;
}
public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
}
然后我定义了一个List,并在里面放了student对象
List list=new ArrayList();
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三"));
我现在想在控制台打出下面的结果:张三:重复数是4个,code是001+002+007+008
李四:重复数是2个,code是003+004
王五:重复数是1个,code是005
赵六:重复数是1个,code是006请个位高手帮忙!谢谢
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ListArtice {
List list=new ArrayList();
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三"));
public static void main(String[] args) {
在此处如何得到下面的结果:我不太会写!
张三:重复数是4个,code是001+002+007+008
李四:重复数是2个,code是003+004
王五:重复数是1个,code是005
赵六:重复数是1个,code是006
}
}
class Student {
private String code = "";
private String name = "";
private String comefrom ="";
public Student(){}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String code,String comefrom,String name){
this.code = code;
this.comefrom = comefrom;
this.name = name;
}
public String getComefrom() {
return comefrom;
}
public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Test2 {
List<Student> list=new ArrayList<Student>();
protected final void fill()
{
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三"));
}
public Test2()
{
fill();
}
public String findCount(String comeFrom,String name)
{
int count=0;
Student s=new Student("1",comeFrom,name);
Iterator<Student> i=list.iterator();
StringBuffer sb=new StringBuffer();
sb.append(name+":"+"Code is(");
while(i.hasNext())
{
Student ls=i.next();
if(s.s_equals(ls))
{
count++;
sb.append(ls.getCode()+",");
}
}
sb.append(")");
sb.append("count is ("+count+")");
sb.append("comeFrom is ("+comeFrom+")");
return sb.toString();
}
public static void main(String[] args)
{
Test2 t2=new Test2();
System.out.println(t2.findCount("北京", "张三"));
System.out.println(t2.findCount("北京", "李四"));
System.out.println(t2.findCount("北京", "王五"));
System.out.println(t2.findCount("北京", "赵六"));
}
}
class Student {
private String code = "";
private String name = "";
private String comefrom ="";
public Student(String code,String comefrom,String name){
this.code = code;
this.comefrom = comefrom;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getComefrom() {
return comefrom;
}
public int HashCode()
{
return new String(code+name+comefrom).hashCode();
}
public boolean equals(Object o)
{
return s_equals(o)&&(((Student)o).code.equals(this.code));
}
public boolean s_equals(Object o)
{
if(!(Student.class.isInstance(o)))
{
return false;
}
Student so=(Student)o;
return
so.name.equals(this.name)
&&so.comefrom.equals(this.comefrom);
}
}
System.out.println(t2.findCount("北京", "张三"));
System.out.println(t2.findCount("北京", "李四"));
System.out.println(t2.findCount("北京", "王五"));
System.out.println(t2.findCount("北京", "赵六"));
你这样的话,程序就写死了。最好在一个方法中,在一个循环中求出。
for ( int i = 0; i < list.size(); i ++ ) {
Student studenti =(Student)list.get(i);
if(!tempListName.contains(studenti.getName())){
tempListName.add(studenti.getName());
}
}
for(int i=0;i<tempListName.size();i++){
System.out.println("不重复的:"+(String)tempListName.get(i));
}在我上面的代码就没有输入参数,就把不重复给列出来了不重复的:张三
不重复的:李四
不重复的:王五
不重复的:赵六
{
return new String(code+name+comefrom).hashCode();
}
public boolean equals(Object o)
{
return s_equals(o)&&(((Student)o).code.equals(this.code));
}
public boolean s_equals(Object o)
{
if(!(Student.class.isInstance(o)))
{
return false;
}
Student so=(Student)o;
return
so.name.equals(this.name)
&&so.comefrom.equals(this.comefrom);
}
} 这些代码!看能实现我说的吗?
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((comefrom == null) ? 0 : comefrom.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
return (this.comefrom.equals((((student)(obj)).comefrom)))
&& (this.name.equals((((student)(obj)).name)));
}
在public static void main中添加{
student stu = (student)list.get(0) ;
for (int i=0;i<list.size();i++){
if(stu.equals((student)list.get(i))){
System.out.print(((student)list.get(i)).getCode()+"\t");
count++;
}
}
System.out.println("的重复数为"+count);
}
}
* @auth=刘志波
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class ListArtice { public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("001", "北京", "张三"));
list.add(new Student("002", "北京", "张三"));
list.add(new Student("003", "北京", "李四"));
list.add(new Student("004", "北京", "李四"));
list.add(new Student("005", "北京", "王五"));
list.add(new Student("006", "北京", "赵六"));
list.add(new Student("007", "北京", "张三"));
list.add(new Student("008", "北京", "张三"));
boolean = true;
if(null != list && list.size()>0){
for(int i=0; i<list.size(); i++){ //遍历list中所有的student
StringBuilder codeStr = new StringBuilder(); //StringBuilder知识点
for(int s=0; s<i; s++){ //查找当前student是否已经被统计过
if(list.get(i).getName().equals(list.get(s).getName())){
//System.out.println("已经统计过了");
= false; //已经统计过了,=false,用于推出本次i循环,执行下一i循环
break;
}
}
if( == false){
= true;
continue; //continue的含义知道吧
}
for(int j=i,m=0; j<list.size(); j++){
if(list.get(i).getName().equals(list.get(j).getName())){
m++;
codeStr.append(list.get(j).getCode().toString() + "+");
}
if(j==list.size()-1){
System.out.println(list.get(i).getName()+":重复数是"+ m +"个,code是" + codeStr.toString());
}
}
codeStr = null;
}
}
}
}class Student {
private String code = "";
private String name = "";
private String comefrom = ""; public Student() {
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Student(String code, String comefrom, String name) {
this.code = code;
this.comefrom = comefrom;
this.name = name;
} public String getComefrom() {
return comefrom;
} public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
}试试
* @auth=刘志波
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class ListArtice { public static void main(String[] args) {
List list = new ArrayList();
list.add(new Student("001", "北京", "张三"));
list.add(new Student("002", "北京", "张三"));
list.add(new Student("003", "北京", "李四"));
list.add(new Student("004", "北京", "李四"));
list.add(new Student("005", "北京", "王五"));
list.add(new Student("006", "北京", "赵六"));
list.add(new Student("007", "北京", "张三"));
list.add(new Student("008", "北京", "张三"));
boolean = true;
if(null != list && list.size()>0){
for(int i=0; i<list.size(); i++){ //遍历list中所有的student
StringBuilder codeStr = new StringBuilder(); //StringBuilder知识点
for(int s=0; s<i; s++){ //查找当前student是否已经被统计过
if(((Student)list.get(i)).getName().equals(((Student)list.get(s)).getName())){
//System.out.println("已经统计过了");
= false; //已经统计过了,=false,用于推出本次i循环,执行下一i循环
break;
}
}
if( == false){
= true;
continue; //continue的含义知道吧
}
for(int j=i,m=0; j<list.size(); j++){
if(((Student)list.get(i)).getName().equals(((Student)list.get(j)).getName())){
m++;
codeStr.append(((Student)list.get(j)).getCode() + "+");
}
if(j==list.size()-1){
System.out.println(((Student)list.get(i)).getName()+":重复数是"+ m +"个,code是" + codeStr.toString());
}
}
codeStr = null;
}
}
}
}class Student {
private String code = "";
private String name = "";
private String comefrom = ""; public Student() {
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Student(String code, String comefrom, String name) {
this.code = code;
this.comefrom = comefrom;
this.name = name;
} public String getComefrom() {
return comefrom;
} public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
}我给你吧泛型去掉了,自己试试,我没有1.4的jdk
private String code = "";
private String name = "";
private String comefrom ="";//来自何方
public Student(String code,String comefrom,String name){
this.code=code;
this.name=name;
this.comefrom=comefrom;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComefrom() {
return comefrom;
}
public void setComefrom(String comefrom) {
this.comefrom = comefrom;
}
//重写equals方法
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Student stu=(Student)obj;
if(name.equals(stu.getName())){
return true;
}else{
return false;
}
}
//显示信息
public void show(List list,Student st){
Iterator it=list.iterator();
int count=0;
String str="";
while(it.hasNext()){
Student stu=(Student) it.next();
if(stu.equals(st)){
count++;
str+=stu.getCode()+",";
}
}
System.out.println(st.getName()+"==="+count+"==="+str.substring(0,str.length()-1));
}}
test类测试
package my.com;import java.util.*;
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三")); Student st=new Student("34","北京","张三");
st.show(list, st);
st=new Student("003","北京","李四");
st.show(list, st);
st=new Student("005","北京","王五");
st.show(list, st);
st=new Student("006","北京","赵六");
st.show(list, st);
}}
{
Map<Student,Integer> map=new HashMap<Student,Integer>();//定义map,用来存储list中出现元素的次数
Iterator<Student> list_iterator=list.iterator();
while(list_iterator.hasNext())//循环list
{
Student list_s=list_iterator.next();
Set<Student> hs=map.keySet();
Iterator<Student> set_iterator=hs.iterator();
outer:
while(set_iterator.hasNext()) //在map之中查找是否已装载该Student,如果找到,返回顶部循环
{
Student set_s=set_iterator.next();
if(list_s.s_equals(set_s))
{
map.put(set_s,map.get(set_s)+1);
continue outer;
}
}
map.put(list_s,1);//如果没找到,则将该元素加入map,计数为1
}
return map.toString();
}
好了,改好了,LZ不一开始把意思说明白~
{
Map<Student,Integer> map=new HashMap<Student,Integer>();//定义map,用来存储list中出现元素的次数
Iterator<Student> list_iterator=list.iterator();
outer:
while(list_iterator.hasNext())//循环list
{
Student list_s=list_iterator.next();
Set<Student> hs=map.keySet();
Iterator<Student> set_iterator=hs.iterator();
while(set_iterator.hasNext()) //在map之中查找是否已装载该Student,如果找到,返回顶部循环
{
Student set_s=set_iterator.next();
if(list_s.s_equals(set_s))
{
map.put(set_s,map.get(set_s)+1);
continue outer;
}
}
map.put(list_s,1);//如果没找到,则将该元素加入map,计数为1
}
return map.toString();
}
outer:位置写错了~
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Test2 {
List<Student> list=new ArrayList<Student>();
protected final void fill()
{
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三"));
}
public Test2()
{
fill();
}
public String findCount()
{
Map<Student,Integer> map=new HashMap<Student,Integer>();//定义map,用来存储list中出现元素的次数
Iterator<Student> list_iterator=list.iterator();
outer:
while(list_iterator.hasNext())//循环list
{
Student list_s=list_iterator.next();
Set<Student> hs=map.keySet();
Iterator<Student> set_iterator=hs.iterator();
while(set_iterator.hasNext()) //在map之中查找是否已装载该Student,如果找到,返回顶部循环
{
Student set_s=set_iterator.next();
if(set_s.s_equals(list_s))
{
map.put(set_s,map.get(set_s)+1);
continue outer;
}
}
map.put(list_s,1);//如果没找到,则将该元素加入map,计数为1
}
return map.toString();
}
public static void main(String[] args)
{
Test2 t2=new Test2();
System.out.println(t2.findCount());
}
}
class Student {
private String code = "";
private String name = "";
private String comefrom ="";
private ArrayList<String> next_code=new ArrayList<String>();
public Student(String code,String comefrom,String name){
this.code = code;
this.comefrom = comefrom;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getComefrom() {
return comefrom;
}
public int HashCode()
{
return new String(code+name+comefrom).hashCode();
}
public boolean equals(Object o)
{
return s_equals(o)&&(((Student)o).code.equals(this.code));
}
public boolean s_equals(Object o)
{
if(!(Student.class.isInstance(o)))
{
return false;
}
Student so=(Student)o;
boolean b=so.name.equals(this.name)&&so.comefrom.equals(this.comefrom);
if(b)
{
next_code.add(so.code);
return true;
}
return false;
}
public String toString()
{
return name+" "+comefrom+" "+code+","+next_code;
}
}
//一个小错误终于找出来了。真郁闷~不过个人对这个版本充满信心~
public class Student { private String code = "";
private String name = "";
private String comefrom = ""; public Student() {
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Student(String code, String comefrom, String name) {
this.code = code;
this.comefrom = comefrom;
this.name = name;
} public String getComefrom() {
return comefrom;
} public void setComefrom(String comefrom) {
this.comefrom = comefrom;
public class Count {
private List list = new ArrayList();
private String stuName; public Count(String stuName) {
this.stuName = stuName;
}
public void add(Student stu)
{
list.add(stu);
} public int size()
{
return list.size();
} public Iterator iterator()
{
return list.iterator();
} public String getStuName() {
return stuName;
}
}public class CustomList {
private HashMap map = new HashMap(); public void add(Student stu)
{
Count obj = (Count)map.get(stu.getName());
if(obj == null)
{
Count count = new Count(stu.getName());
count.add(stu);
map.put(stu.getName(), count);
}else
{
obj.add(stu);
}
}
public Iterator iterator()
{
return map.values().iterator();
} public static void main(String args[])
{
CustomList list = new CustomList();
list.add(new Student("001","北京","张三"));
list.add(new Student("002","北京","张三"));
list.add(new Student("003","北京","李四"));
list.add(new Student("004","北京","李四"));
list.add(new Student("005","北京","王五"));
list.add(new Student("006","北京","赵六"));
list.add(new Student("007","北京","张三"));
list.add(new Student("008","北京","张三")); Iterator it = list.iterator(); while(it.hasNext())
{
Count count = (Count)it.next();
Iterator itStu = count.iterator();
System.out.print(count.getStuName()+"重复个数是"+count.size()+"个,code是");
while(itStu.hasNext())
{
Student stu = (Student)itStu.next();
System.out.print(stu.getCode()+",");
}
System.out.println();
}
}}
List list = new ArrayList();
list.add(new Student("001", "北京", "张三"));
list.add(new Student("002", "北京", "张三"));
list.add(new Student("003", "北京", "李四"));
list.add(new Student("004", "北京", "李四"));
list.add(new Student("005", "北京", "王五"));
list.add(new Student("006", "北京", "赵六"));
list.add(new Student("007", "北京", "张三"));
list.add(new Student("008", "北京", "张三")); Student stu = null;
List names = new ArrayList();
for (int i = 0; i < list.size(); i++) {
int count = 1;
StringBuilder codes = new StringBuilder();
stu = (Student) list.get(i);
codes.append(stu.getCode());
for (int j = i + 1; j <list.size(); j++) {
Student stu2 = (Student) list.get(j);
if (names.contains(stu2.getName())) {
break;
} else if (stu.getName().trim().equalsIgnoreCase(stu2.getName().
trim())) {
count++;
codes.append("+");
codes.append(stu2.getCode());
}
}
if (!names.contains(stu.getName()))
System.out.println(stu.getName() + ":重复个数是" + count + "个,code是" +
codes.toString());
names.add(stu.getName());
}