Solved

making a new List

Posted on 2014-01-28
7
254 Views
Last Modified: 2014-02-13
I  have two  lists:
List<Student> studentList1
List<Student> studentList2


student class looks like below...

class Student{
 private int ID
 ......
 ........

}


Now ...I want to build a a new  list  


Logic:  replace  students from studentList1 with the students from studentList2  whoose studentId matches.

What is the quicker approach ?  I may have to do such operations  for  5/6  lists.
0
Comment
Question by:cofactor
  • 4
  • 2
7 Comments
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
replace  students from studentList1 with the students from studentList2  whoose studentId matches.
Why are they not identical in all respects - how do they differ?
0
 

Author Comment

by:cofactor
Comment Utility
they differ by some fields values -  they are just populated. I want to keep them.
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 400 total points
Comment Utility
replace  students from studentList1 with the students from studentList2  whoose studentId matches.
Why are they not identical in all respects - how do they differ?

Assuming the Student class is uniquely identified by its ID (it should be) then it follows the ID can be used by Student.hashCode and Student.equals. For a List<Student> 'sl' then the following might be used:

	Set<Student> s = new HashSet<Student>(sl1);
	s.addAll(sl2); 

Open in new window

If there are instances in the second List you don't want to end up in the first, then an iterative approach might be better
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:cofactor
Comment Utility
>>Set<Student> s = new HashSet<Student>(sl1);
>>s.addAll(sl2);

what is sl1   and sl2 in your code ? is this the complete code ?  

I am bit confused.
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
what is sl1   and sl2 in your code
The first and second List<Student>
0
 
LVL 2

Expert Comment

by:c_kedar
Comment Utility
If the order in the list is not important then use set as suggested by CEHJ.
Remember to implement equals and hashcode in Student for this to work.
Eclipse can do this for you: Source > Generate hashCode() and equals()
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		LogTest other = (LogTest) obj;
		if (id != other.id)
			return false;
		return true;
	}

Open in new window


Also note that size of combined set can be greater than first list, i.e. combined set will have Students that were not present in first list but present in second list.
If this is not what you want, then
s.retainAll(sl1);

Open in new window

0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
:)

If you need a hashCode method for Student, you can just use its ID (which should be unique)
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now