How to use bitcoinj to transfer btc from p2sh-p2wpkh
solved
Script redeemScript = ScriptBuilder.createP2WPKHOutputScript(key);

Script witnessScript = ScriptBuilder.createP2PKHOutputScript(key);

TransactionSignature signature = tx.calculateWitnessSignature(inputIndex, key, witnessScript, txIn.getValue(), SigHash.ALL,
        false);

txIn.setWitness(TransactionWitness.redeemP2WPKH(signature, key));
txIn.setScriptSig(new ScriptBuilder().data(redeemScript.getProgram()).build());