import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import bean.News;
import bean.User;
public class Like {
public static void main(String[] args) {
List<User> list1=new ArrayList<User>();
List<News> list2=new ArrayList<News>();
User user1=new User();
News news1=new News();
try {
Class.forName("com.mysql.jdbc.Driver");
//URL指向要访问的数据库名mydata
String url = "jdbc:mysql://localhost:3306/news?useSSL=true";
//MySQL配置时的用户名
String user = "root";
//MySQL配置时的密码
String password = "19961020";
Connection conn = DriverManager.getConnection(url,user,password);
Statement stmt= conn.createStatement() ;
String sql1="select * from users";
String sql2="select * from news";
String sql3="select newsid from newsbelike where userid=?";
String sql4="select count(*) as num from newsbelike where userid=?";
ResultSet rs1= stmt.executeQuery(sql1) ;
while(rs1.next()){
user1.setUsername(rs1.getString("username"));
user1.setId(rs1.getInt("id"));
list1.add(user1);
}
rs1.close();
ResultSet rs2= stmt.executeQuery(sql2) ;
while(rs2.next()){
news1.setTitle(rs2.getString("title"));
news1.setNew_id(rs2.getInt("id"));
list2.add(news1);
}
rs2.close();
int[][] likeuser=new int[list1.size()][];
for(int i=1;i<list1.size()+1;i++){
PreparedStatement ps1= conn.prepareStatement(sql3);
ps1.setInt(1, i);
ResultSet rs3= ps1.executeQuery() ;
List<Integer> list3=new ArrayList<Integer>();
while(rs3.next()){
int id=rs3.getInt("newsid");
list3.add(id);
}
likeuser[i-1]=new int[list3.size()];
for(int j=0;j<list3.size();j++){
likeuser[i-1][j]=list3.get(j);
}
}
for(int[] is:likeuser){
System.out.println();
for(int i:is){
System.out.print(i);
System.out.print(" ");
}
}
System.out.println("------------华丽的分割线-------------");
int[][] usersame=new int[list1.size()][list1.size()];
for(int i=0;i<list1.size();i++){
for(int u=0;u<list1.size();u++){
for(int j=0;j<likeuser[i].length;j++){
for(int k=0;k<likeuser[u].length;k++){
if(likeuser[i][j]==likeuser[u][k]){
usersame[i][u]++;
}
}
}
}
}
for(int i=0;i<list1.size();i++){
System.out.println();
for(int u=0;u<list1.size();u++){
System.out.print(usersame[i][u]);
System.out.print(" ");
}}
System.out.println();
System.out.println("------------华丽的分割线-------------");
float[][] usersim=new float[list1.size()][list1.size()];
for(int i=1;i<list1.size()+1;i++){
for(int u=1;u<list1.size()+1;u++){
PreparedStatement ps2= conn.prepareStatement(sql4);
ps2.setInt(1, i);
ResultSet rs4= ps2.executeQuery() ;
int numi=0;
while(rs4.next()){
numi=rs4.getInt("num");
}
PreparedStatement ps3= conn.prepareStatement(sql4);
ps3.setInt(1, u);
ResultSet rs5= ps3.executeQuery() ;
int numu=0;
while(rs5.next()){
numu=rs5.getInt("num");
}
if(numi*numu==0){
usersim[i-1][u-1]=0;
}else if(u==i){
usersim[i-1][u-1]=0;
}
else if(usersame[i-1][u-1]==0){
usersim[i-1][u-1]=0;
}else{
usersim[i-1][u-1]=(((float)usersame[i-1][u-1])/((float)Math.sqrt(numu*numi)));}
}
}
for(int i=0;i<list1.size();i++){
System.out.println();
for(int u=0;u<list1.size();u++){
System.out.print(usersim[i][u]);
System.out.print(" ");
}}
float[] data=new float[usersim[0].length];
for(int i=0;i<usersim[0].length;i++){
data[i]=usersim[7-1][i];
}
float[] data1=new float[usersim[0].length];
List<Integer> simuserid=new ArrayList<Integer>();
System.arraycopy(data1, 0, data1, 0, data.length);
Arrays.sort(data1);
//System.out.println(data[data.length-1]);
List<Integer> newidlist=new ArrayList<Integer>();
for(int i=data1.length-1;i>(data1.length)-3;i--){
for(int j=0;j<data.length;j++){
if(data1[i]==data[j]){
simuserid.add(j);
}
}
}
for(int i=0;i<simuserid.size();i++)
{
System.out.println(simuserid.get(i));
}
for(int i=0;i<simuserid.size();i++){
//System.out.println(simuserid.get(i));
PreparedStatement ps5= conn.prepareStatement(sql3);
ps5.setInt(1, simuserid.get(i));
ResultSet rs5= ps5.executeQuery() ;
while(rs5.next()){
int id=rs5.getInt("newsid");
newidlist.add(id);
}
}
List<Integer> newidlist1=new ArrayList<Integer>();
PreparedStatement ps6= conn.prepareStatement(sql3);
ps6.setInt(1, 7);
ResultSet rs6= ps6.executeQuery() ;
while(rs6.next()){
int id=rs6.getInt("newsid");
newidlist1.add(id);
}
/*System.out.println(newidlist.get(0));*/
List<Integer> listTemp= new ArrayList<Integer>();
Iterator<Integer> it=newidlist.iterator();
while(it.hasNext()){
int a=it.next();
if(listTemp.contains(a)){
it.remove();
}
else{
listTemp.add(a);
}
}
newidlist.removeAll(newidlist1);
}catch(Exception e){
e.printStackTrace() ;
}
}}
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import bean.News;
import bean.User;
public class Like {
public static void main(String[] args) {
List<User> list1=new ArrayList<User>();
List<News> list2=new ArrayList<News>();
User user1=new User();
News news1=new News();
try {
Class.forName("com.mysql.jdbc.Driver");
//URL指向要访问的数据库名mydata
String url = "jdbc:mysql://localhost:3306/news?useSSL=true";
//MySQL配置时的用户名
String user = "root";
//MySQL配置时的密码
String password = "19961020";
Connection conn = DriverManager.getConnection(url,user,password);
Statement stmt= conn.createStatement() ;
String sql1="select * from users";
String sql2="select * from news";
String sql3="select newsid from newsbelike where userid=?";
String sql4="select count(*) as num from newsbelike where userid=?";
ResultSet rs1= stmt.executeQuery(sql1) ;
while(rs1.next()){
user1.setUsername(rs1.getString("username"));
user1.setId(rs1.getInt("id"));
list1.add(user1);
}
rs1.close();
ResultSet rs2= stmt.executeQuery(sql2) ;
while(rs2.next()){
news1.setTitle(rs2.getString("title"));
news1.setNew_id(rs2.getInt("id"));
list2.add(news1);
}
rs2.close();
int[][] likeuser=new int[list1.size()][];
for(int i=1;i<list1.size()+1;i++){
PreparedStatement ps1= conn.prepareStatement(sql3);
ps1.setInt(1, i);
ResultSet rs3= ps1.executeQuery() ;
List<Integer> list3=new ArrayList<Integer>();
while(rs3.next()){
int id=rs3.getInt("newsid");
list3.add(id);
}
likeuser[i-1]=new int[list3.size()];
for(int j=0;j<list3.size();j++){
likeuser[i-1][j]=list3.get(j);
}
}
for(int[] is:likeuser){
System.out.println();
for(int i:is){
System.out.print(i);
System.out.print(" ");
}
}
System.out.println("------------华丽的分割线-------------");
int[][] usersame=new int[list1.size()][list1.size()];
for(int i=0;i<list1.size();i++){
for(int u=0;u<list1.size();u++){
for(int j=0;j<likeuser[i].length;j++){
for(int k=0;k<likeuser[u].length;k++){
if(likeuser[i][j]==likeuser[u][k]){
usersame[i][u]++;
}
}
}
}
}
for(int i=0;i<list1.size();i++){
System.out.println();
for(int u=0;u<list1.size();u++){
System.out.print(usersame[i][u]);
System.out.print(" ");
}}
System.out.println();
System.out.println("------------华丽的分割线-------------");
float[][] usersim=new float[list1.size()][list1.size()];
for(int i=1;i<list1.size()+1;i++){
for(int u=1;u<list1.size()+1;u++){
PreparedStatement ps2= conn.prepareStatement(sql4);
ps2.setInt(1, i);
ResultSet rs4= ps2.executeQuery() ;
int numi=0;
while(rs4.next()){
numi=rs4.getInt("num");
}
PreparedStatement ps3= conn.prepareStatement(sql4);
ps3.setInt(1, u);
ResultSet rs5= ps3.executeQuery() ;
int numu=0;
while(rs5.next()){
numu=rs5.getInt("num");
}
if(numi*numu==0){
usersim[i-1][u-1]=0;
}else if(u==i){
usersim[i-1][u-1]=0;
}
else if(usersame[i-1][u-1]==0){
usersim[i-1][u-1]=0;
}else{
usersim[i-1][u-1]=(((float)usersame[i-1][u-1])/((float)Math.sqrt(numu*numi)));}
}
}
for(int i=0;i<list1.size();i++){
System.out.println();
for(int u=0;u<list1.size();u++){
System.out.print(usersim[i][u]);
System.out.print(" ");
}}
float[] data=new float[usersim[0].length];
for(int i=0;i<usersim[0].length;i++){
data[i]=usersim[7-1][i];
}
float[] data1=new float[usersim[0].length];
List<Integer> simuserid=new ArrayList<Integer>();
System.arraycopy(data1, 0, data1, 0, data.length);
Arrays.sort(data1);
//System.out.println(data[data.length-1]);
List<Integer> newidlist=new ArrayList<Integer>();
for(int i=data1.length-1;i>(data1.length)-3;i--){
for(int j=0;j<data.length;j++){
if(data1[i]==data[j]){
simuserid.add(j);
}
}
}
for(int i=0;i<simuserid.size();i++)
{
System.out.println(simuserid.get(i));
}
for(int i=0;i<simuserid.size();i++){
//System.out.println(simuserid.get(i));
PreparedStatement ps5= conn.prepareStatement(sql3);
ps5.setInt(1, simuserid.get(i));
ResultSet rs5= ps5.executeQuery() ;
while(rs5.next()){
int id=rs5.getInt("newsid");
newidlist.add(id);
}
}
List<Integer> newidlist1=new ArrayList<Integer>();
PreparedStatement ps6= conn.prepareStatement(sql3);
ps6.setInt(1, 7);
ResultSet rs6= ps6.executeQuery() ;
while(rs6.next()){
int id=rs6.getInt("newsid");
newidlist1.add(id);
}
/*System.out.println(newidlist.get(0));*/
List<Integer> listTemp= new ArrayList<Integer>();
Iterator<Integer> it=newidlist.iterator();
while(it.hasNext()){
int a=it.next();
if(listTemp.contains(a)){
it.remove();
}
else{
listTemp.add(a);
}
}
newidlist.removeAll(newidlist1);
}catch(Exception e){
e.printStackTrace() ;
}
}}