与java集合集合相关的查询

与java集合集合相关的查询,java,jakarta-ee,collections,Java,Jakarta Ee,Collections,在我的项目程序搜索栏中,我使用Set存储从数据库检索的值 我的去宽容代码是 Set<String> name=new HashSet<String>(); Set<String> category=new HashSet<String>(); Set<String> description=new HashSet<String>(); 控制台上显示的结果是: 姓名及尺码:42 类别数目:12 说明尺寸:12 但我认为所有设

在我的项目程序搜索栏中,我使用Set存储从数据库检索的值 我的去宽容代码是

Set<String> name=new HashSet<String>();
Set<String> category=new HashSet<String>();
Set<String> description=new HashSet<String>();
控制台上显示的结果是: 姓名及尺码:42 类别数目:12 说明尺寸:12

但我认为所有设置的对象长度应该是相同的…在我的数据库中没有空值
集合大小标准是否存在?或者是否存在任何其他问题?

Set
不允许重复值。使用
List
而不是
Set

List<String> name=new ArrayList<>();
List<String> category=new ArrayList<>();
List<String> description=new ArrayList<>();
List name=new ArrayList();
列表类别=新的ArrayList();
列表说明=新建ArrayList();
A不允许重复

不包含重复元素的集合。更正式地说,设置 不包含一对元素e1和e2,使得e1.equals(e2)和at 大多数情况下只有一个空元素

String sql=“选择名称、类别、左侧(说明,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

Set是一个不接受重复值的接口。所以您必须有42个不同的名称、12个不同的类别和12个不同的描述,这就是为什么您的大小会有所不同。
您可以使用列表接口而不是SET,可以使用ARRAYList。< /P> < P>代码> SET>代码>不允许重复的元素。请考虑<代码>列表>代码>而不是<代码> SET < < /P>
List<String> name=new ArrayList<>();
List<String> category=new ArrayList<>();
List<String> description=new ArrayList<>();
考虑一下这个设计

您的物品

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());
List items=new ArrayList();
while(rs.next())
{
i++;
String name=name.add(rs.getString(1));
stringcategory=category.add(rs.getString(2));
字符串描述=description.add(rs.getString(3));
项目=新项目(名称、类别、说明);
项目。添加(项目);
系统输出打印项次(i+“项”项);
}
System.out.println(“总项目数”+项目数.size());

检查多行的描述是否相同。如果需要包含重复列表的数据结构,则应使用列表结构(ArrayList,LinkedList).Set eforce uniquiness…是的,我在Set ArrayList之前使用过…但我需要基于所有元素名称、类别、描述的唯一值。我应该更改所有不同值的查询吗?简单地说,Java的
Set
是一个集,而C++的
是一个多集。但我需要基于所有元素名称、类别、描述的唯一值我是否应该更改对所有不同值的查询替换集合时应使用的是ArrayList或List,这是一个好选项???您应该使用与我的回答声明相同的ArrayList。@KuldeepChoudhary是为每个字段创建单独的列表。创建对象并放入单个列表更容易。