在我的项目程序搜索栏中,我使用Set for store从数据库中检索值 我的代码是
Set<String> name=new HashSet<String>();
Set<String> category=new HashSet<String>();
Set<String> description=new HashSet<String>();
&安培;搜索查询是:
stmt=con.createStatement();
String sql="select name,category,left(description,150) from packages where name like '%"+query+"%'";
rs=stmt.executeQuery(sql);
while(rs.next())
{
i++;
name.add(rs.getString(1));
category.add(rs.getString(2));
description.add(rs.getString(3));
System.out.println("Length Is :\n Name :"+name.size()+"\n category :"+category.size()+"\n description :"+description.size());
}
控制台上显示的结果是: 名称大小:42 类别大小:12 描述尺寸:12
但我认为所有设置对象的长度应该相同...在我的数据库中没有空值 是否有Set集合大小标准???或有任何其他问题???
答案 0 :(得分:3)
Set
不允许重复值。使用List
代替Set
。
List<String> name=new ArrayList<>();
List<String> category=new ArrayList<>();
List<String> description=new ArrayList<>();
答案 1 :(得分:3)
Set
不允许重复。
不包含重复元素的集合。更正式的,集合 不包含元素e1和e2对,使得e1.equals(e2)和at 大多数一个null元素。
String sql="select name,category,left(description,150)
我认为几个包具有相同的类别和描述(如果它是类别的描述)
如果您的表格如下:
name | category | description
Name1 cat1 descriptionOfCat1
Name2 cat1 descriptionOfCat1
Name3 cat2 descriptionOfCat2
Name4 cat2 descriptionOfCat2
你将拥有:
name size:4
category size:2
description size:2
答案 2 :(得分:2)
Set是一个不带重复值的接口。因此,您必须拥有42个不同的名称,12个不同的类别和12个不同的描述,这就是您获得大小变化的原因。 您可以使用List接口而不是set,可以使用ArrayList。
答案 3 :(得分:2)
Set
不允许重复元素。请考虑List
而不是Set
。
考虑这个设计。
你的物品
class Item {
String name;
String category;
String description;
public Item(String aName, String aCategory, String aDescription) {
super();
this.name = aName;
this.category = aCategory;
this.description = aDescription;
}
@Override
public String toString() {
return "Item [name=" + name + ", category=" + category
+ ", description=" + description + "]";
}
}
您的数据访问代码。
List<Item> items=new ArrayList<Item>();
while(rs.next())
{
i++;
String name = name.add(rs.getString(1));
String category = category.add(rs.getString(2));
String description = description.add(rs.getString(3));
Item item= new Item(name,category,description);
items.add(item);
System.out.println(i+" item " item);
}
System.out.println("Total items "+items.size());