Device-to-Device (D2D) communication has been proposed as a promising way to offload traffic from the cellular network. In this paper, with the joint impact of user preference and selfishness, the D2D assisted content dissemination process is investigated in order to maximize the offloading gain via D2D communications. An alternative group pushing optimization (AGPO) algorithm is proposed to solve the formulated nonconvex problem. In addition, for the special case of two groups, the optimal solution is derived in closed-form to help validate the algorithm. Finally, the simulation results show that the AGPO algorithm converges to the global optimum and has a much lower complexity compared to exhaustive search.