// 建立用户数组 除了目标用户外 随机再抽取9个用户 String[] users = new String[10]; users[0] = this.userid; List<Users> usersList = this.usersDAO.getUsers(this.userid); System.out.println("users == > " + usersList.size()); } List<Goods> goodsList = this.goodsDAO.getAllGoods(); this.goods = new String[goodsList.size()]; for (int j = 0; j < goodsList.size(); j++) { this.goods[j] = goodsList.get(j).getGoodsid(); } // 建立二维数组 用户如果浏览了商品则标记为1未浏览则标记为0,之后计算用户之间的相似度 int[][] allUserGoodshist = new int[10][goodsList.size()]; for (int i = 0; i < 10; i++) { for (int j = 0; j < goodsList.size(); j++) { String goodsid = this.goods[j]; Hist hist = new Hist(); hist.setUsersid(users[i]); hist.setGoodsid(goodsid); List<Hist> histList = this.histDAO.getHistByCond(hist); } } for (int i = 0; i < 10; i++) { for (int j = 0; j < goodsList.size(); j++) { if (j == goodsList.size() - 1) { System.out.print(allUserGoodshist[i][j]); } else { System.out.print(allUserGoodshist[i][j] + " ,"); } } System.out.println(""); } this.targetUserCommentedGoods = new ArrayList<String>(); Hist hist = new Hist(); hist.setUsersid(this.userid); List<Hist> histList = this.histDAO.getHistByCond(hist); for (int i = 0; i < histList.size(); i++) { // 计算用户相似度,对相似度进行排序 this.calcUserSimilarity(allUserGoodshist, goodsList.size()); // 计算商品推荐度,进行排序 this.calcRecommendGoods(allUserGoodshist, goodsList.size()); // 处理并生成推荐商品列表 this.handleRecommendGoods(allUserGoodshist, goodsList.size()); String rommendId = ""; for (int i = 0; i < this.targetRecommendGoods.size(); i++) { String item = this.targetRecommendGoods.get(i); if (!commentedGoods.contains(item)) { if (i == this.targetRecommendGoods.size() - 1) { rommendId += item; } else { rommendId += item + ","; } } }
时间: 2023-06-17 21:05:54 浏览: 41
这段代码看起来是一个基于用户的推荐算法。首先,它建立了一个用户数组,并从数据库中获取了与目标用户有关联的用户列表。然后,它建立了一个二维数组,用于标记用户是否浏览过某个商品。接下来,它计算了用户之间的相似度,并对相似度进行排序。然后,它计算了商品的推荐度,并进行排序。最后,它处理并生成了推荐商品列表,将未评论过的商品添加到推荐列表中。
相关问题
android从string数组中随机抽取3个元素并弹窗单选框从3个元素中选择一项
您可以按照以下步骤实现:
1. 在strings.xml文件中定义一个包含至少3个字符串的string数组,例如:
```xml
<string-array name="options">
<item>选项1</item>
<item>选项2</item>
<item>选项3</item>
<item>选项4</item>
</string-array>
```
2. 在代码中获取string数组,然后随机选择3个元素,例如:
```java
String[] options = getResources().getStringArray(R.array.options);
List<String> selectedOptions = new ArrayList<>();
Random random = new Random();
while (selectedOptions.size() < 3) {
String option = options[random.nextInt(options.length)];
if (!selectedOptions.contains(option)) {
selectedOptions.add(option);
}
}
```
3. 弹出单选框对话框,让用户从3个元素中选择一个,例如:
```java
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择一个选项");
final String[] items = selectedOptions.toArray(new String[0]);
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String selectedOption = items[which];
// 这里可以处理用户选择的选项
dialog.dismiss();
}
});
builder.show();
```
这样就可以实现从string数组中随机抽取3个元素并弹窗单选框让用户选择一个的功能了。
android从string数组中随机抽取3个元素并弹窗单选框从3个元素中选择一项设置为textview内容
您可以按照以下步骤实现:
1. 在strings.xml文件中定义一个包含至少3个字符串的string数组,例如:
```xml
<string-array name="options">
<item>选项1</item>
<item>选项2</item>
<item>选项3</item>
<item>选项4</item>
</string-array>
```
2. 在代码中获取string数组,然后随机选择3个元素,例如:
```java
String[] options = getResources().getStringArray(R.array.options);
List<String> selectedOptions = new ArrayList<>();
Random random = new Random();
while (selectedOptions.size() < 3) {
String option = options[random.nextInt(options.length)];
if (!selectedOptions.contains(option)) {
selectedOptions.add(option);
}
}
```
3. 弹出单选框对话框,让用户从3个元素中选择一个,并将选择的元素设置为TextView的内容,例如:
```java
final TextView textView = findViewById(R.id.text_view);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择一个选项");
final String[] items = selectedOptions.toArray(new String[0]);
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String selectedOption = items[which];
textView.setText(selectedOption);
dialog.dismiss();
}
});
builder.show();
```
这样就可以实现从string数组中随机抽取3个元素并弹窗单选框让用户选择一个并将选择的元素设置为TextView的内容的功能了。