Thanks to Mark and Lucas for your replies.
You are both of course correct, in fact I simply add the new keys to the row
and column headers. Because they are sets, I don't get any dups.
However the question is still relevant. What if I want to have a single
method that can manipulate either one of the headers and accept a parameter
appropriate to the "type" of header (i.e. an R or C)?
The signature
private void ensureExists (TreeSet<? extends ObjecttreeSet, Object
key) {
Allows me to pass either type of header set (row or column), but I can't
pass the parameter, so my question is about how do I get something like
these to work:
private void someMethod (TreeSet<? extends ObjecttreeSet, <? extends
Objectkey) {
or
private void someMethod (TreeSet<? extends ObjecttreeSet, ? key) {
or
private void someMethod (TreeSet<XtreeSet, X key) {
None of the above worked for me.
Another variant is
private TreeSet<Xsubset (TreeSet<XtreeSet, X startKey, X endKey) {
Where X is either an R or C. and the subset returns a subset of values
between the start and end key values.
Surely this is possible!?!?!
"Mark Space" <markspace@sbcglobal.netwrote in message
news:g984ic$j1n$1@registered.motzarella.org...
Quote:
wizard of oz wrote:
> Quote:
>public class SparseMatrix<R, C, E{
>>
> private TreeSet<RrowHeaders = new TreeSet<R();
> private TreeSet<CcolHeaders = new TreeSet<C();
>>
> public void add (R rowKey, C colKey, E element) {
>>
> ensureExists (rowHeaders, rowKey);
> ensureExists (colHeaders, colKey);
> }
>>
> private void ensureExists (TreeSet<? extends ObjecttreeSet, Object
| > Quote: |
>The problem is that the compiler is complaining about the treeSet.add
| >
Well, the problem is that "rowHeaders" and "colHeaders" contain types of R
and C respectively, and you're trying to add a type of Object.
>
If you want to ensure that some type R "rowKey" exists in rowHeaders, then
>
boolean exists = rowHeaders.contains( rowKey );
>
will do the whole thing for you. I think however you are confused as to
what a Set like TreeSet will actually do for you. You seem to be trying
to ensure that the /pair/ R, E exists, in which case you need a Map, not a
Set.
>
E tempElement;
if( (tempElement = rowMap.get( rowKey )) != null ) {
// the pair (rowKey, element) exist
}
>
>
You might even put rowKey and colKey together in one single object though
and just do look-ups on that. Faster and easier.
|