Re: Java Collections List : Converting from List '<Column <String1,
String2>>' to 'List <String1>'
On 02/19/2011 08:01 AM, Eric Sosman wrote:
On 2/19/2011 7:05 AM, asil klin wrote:
I have a function that returns a list like this:-
List<Column<String1, String2>>
Next I want to pass this list to a 2nd function, but 2nd function just needs
a list which contains only 1st part (string1) of the Column(s) of the above
list.
So I want pass just this list to 2nd function:-
List<String1>
What would be the best way to do this ??
You'll need to build a new List<String> and populate it by
extracting data from the given list. It would look something like
this (I'm inventing a few methods and names):
List<Column<String1,String2>> original = ...;
List<String1> reduced = new ArrayList<String1>(original.size());
for (Column<String1,String2> col : original) {
String1 first = col.getFirst();
reduced.add(first);
}
There are, of course, about one and a half gazillion different ways
to rearrange and repackage this logic, but one way or another you'll
have to do something like it. As far as I know, Java has no `mapcar'.
Another approach would be to use standard API calls.
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int kount = rsmd.getColumnCount();
List <String1> reduced = new ArrayList <String1> (kount);
for ( int ix = 0; ix < kount; ++ix )
{
reduced.add( rsmd.getColumnName().toString() );
}
I had to make up 'String1.toString()''s behavior because I know nothing about
your (very, very badly-named) 'String1' type. I hope its 'toString()' does
the right thing.
If you aren't using a 'ResultSet' to determine the columns of interest you can
get them from 'DatabaseMetaData#getColumns()'. Studying the API is a really,
really, really, really, really, really good idea.
http://download.oracle.com/javase/6/docs/api/java/sql/ResultSetMetaData.html
http://download.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html
--
Lew
Honi soit qui mal y pense.