I have a wrapper class which is sorted by the totalCount of the size of the three list (**empSkillList, empTrainingList, and empCertificationList**). Can I sort it also by the fields inside the list of the custom object? If yes, how to do so? Or will I convert it first to a list of string so I can compare it?

    global class pageFilter implements comparable {
        
        public Contact employee{get;set;}
        public List<Employee_Skills__c> empSkillList{get;set;}
        public List<Employee_Training__c> empTrainingList{get;set;}
        public List<Employee_Certification__c> empCertificationList{get;set;}
        
        //related list of skill, training and Cert
        public List<Employee_Skills__c> relatedSkillList{get;set;}
        public List<Employee_Training__c> relatedTrainingList{get;set;}
        public List<Employee_Certification__c> relatedCertificationList{get;set;}               
        
        public integer totalCount { 
           get {
                // Grouped based on the number of matched filter
                if (empSkillList != null && empTrainingList == null && empCertificationList == null) {
                    return empSkillList.size();    
                }
            
                if (empTrainingList != null && empSkillList == null && empCertificationList == null) {
                    return empTrainingList.size();    
                }                 
            
                if (empCertificationList != null && empSkillList == null && empTrainingList == null) {
                    return empCertificationList.size();
                }
            
                if (empSkillList != null && empTrainingList != null && empCertificationList == null ) {
                    return empSkillList.size() + empTrainingList.size();
                }
            
                if (empSkillList != null && empTrainingList == null && empCertificationList != null ) {
                    return empSkillList.size() + empCertificationList.size();
                }                        
            
                if (empSkillList == null && empTrainingList != null && empCertificationList != null) {
                    return empTrainingList.size() + empCertificationList.size();
                }
                                                           
                if (empSkillList != null && empTrainingList != null && empCertificationList != null ) {
                    return empSkillList.size() + empTrainingList.size() + empCertificationList.size();                   
                }
                return  0; 
                                                  
            }                      
        } 
       
        public Integer compareTo(Object compareTo) {
        pageFilter compareToFilter = (pageFilter)compareTo;

            if(this.totalCount < compareToFilter.totalCount) {
                return 1;
            } else if(this.totalCount > compareToFilter.totalCount) {
                return -1;
            } else {
                // You could check further criteria when counts are the same.
                return 0;
            }
        }
                      
    }