You need to override the equals method in Class C.
e.g.
public boolean equals(Object c) {
if(c !instanceof C) {
return false;
}
C that = (C)c;
return this.str1.equals(that.getStr1()) && this.str2.equals(that.getStr2());
}
Then you can call myList.contains(viz) to see if the list already contains an equal object.
This is untested, you may want some additional error handling.
If you do override the equals method like this, you should also make sure you override the hashcode() method. See: http://www.technofundo.com/tech/java/equalhash.html
Edit:
As pointed out in the comments, the set implementation is going to be more efficient, though you will still need to override equals / hashcode method so the above example may be best used in conjunction with Karthiks answer above.