"twist" is presumably something roughly like
Card newCard = deck.deal(1);
so you will have a reference to the new card before youadd that to your hand.
If you have a current tota; value then you can update that at the same time
totalValue += newCard.getRank().getValue();
userList.add(newCard);
You can simplify this by adding a getValue method in the Card class that simply retruns this.rank.getValue(), then you can jus write
totalValue += newCard.getValue();
I don't think the "current card" variable is useful - if you really do need it then it's just the last card in the list.
Aces being 1 or 11 is always going to be messy to code. You may not need to store 1 or 11 because the user is free to change their mind and opt for 1 or 11 whenever they want.
YOu currently have one class for user and dealer and end up with duplicated variables etc. I suggest one class (with just one list variable) then create a Dealer subclass for any special logic that applies to dealers only.