Define "private"? If they are associated with some vanity domain, you need to verify the domain in O365 and optionally setup password sync or AD FS. If you mean something like a google email address, no, it's not possible.
Private meaning if the users could authenticate using John.firstname.lastname@example.org and a password into our ADFS, which authenticates and logs the user into Office365, where the actual username may be John.email@example.com
I'd say technically this would probably be doable. You'd look at configuring this user to have the UPN "firstname.lastname@example.org" and would have to modify the claims issuance rules to send a different value. Additionally, the user would have to have a password in your Active Directory against that object. Not pleasant.
Technically doable? Probably. Clever? Probably not. This will introduce A LOT of complexity, pain, and lack-of-support, for minimal gain.
I'd very strongly suggest reevaluating your requirements here.
EDIT: To clarify, you could configure AD FS to do strictly what you've asked, but as @Vasil Michev mentions above, using a public account's credentials against AD FS is not possible.