SHA1 is a hashing algorithm (as opposed to an encryption algorithm), this means the string you're trying to hash will always have the same result. As an example, the string "password" will always have the same SHA1 hash (5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8). If you have the list of hashes, you can always find a lot of the passwords by using the techniques explained above.
The output of your library's BcryptEncoder.encode(password) includes not only the password hash but information about the algorithm and the salt. That's what you store in your database. That extra information tells the decode function how to decode later on.
All of that running on GPU. It's terribly effective. Even more so when 90% of accounts are throwaway/bots/fake accounts.
I'd make a blog post about cracking 99.7% of AdultFriendFinder passwords in 1 hour. But then I realized that it's evil and I shall not.