java - 将字符串与我的 ArrayList 进行比较

标签 java arraylist

我有这个ArrayList:

List<String> zainteresowanka = new ArrayList<String>();
zainteresowanka.add("Java");
zainteresowanka.add("Platforma .NET (C#)");
zainteresowanka.add("Android");
zainteresowanka.add("iOS");
zainteresowanka.add("Windows Phone");
zainteresowanka.add("Technologie WWW (HTML, CSS, JavaScript)");
zainteresowanka.add("Testowanie aplikacji");
zainteresowanka.add("Projektowanie aplikacji");
zainteresowanka.add("Analiza Biznesowa");
zainteresowanka.add("Inne");

这些是人们可以选择他喜欢的东西。 如果他选择“Inne”,那么他必须输入此 ArrayList 不包含的其他一些他喜欢的内容。

它是这样写入数据库的:

  1. Platforma .NET (C#) 2. iOS 3. Windows Phone

在一个字符串中。

将其保存到字符串的方法如下所示:

 zainteresowaniaa = zainteresowaniaa + " " + licz + ". " + zainteresowanka.get(wyboor);  
 licz = licz + 1;

我需要做的是根据 ArrayList zainteresowanka 搜索列表,因此我可以选择例如“Java,iOS”,并且我得到了所有有过的人选择那些。

我该怎么做?

最佳答案

据我了解

您有一个数组列表,其中包含用户可以选择的项目。您将把所选项目保存到数据库中。然后您需要获取选择某些项目(例如“Windows Phone”)的用户

首先你需要为不同的用户分配一个id来区分他们。

使用用户 ID 将详细信息存储在数据库中

例如

 ==============================
 userid | chosen items
 ==============================
  1      | windows  ios android  
  2      | android ios
  ===============================

然后您需要在数据库(假设是mysql或sql之类)中搜索特定项目(value1,value2)。您可以使用“LIKE”或“IN”运算符

您可以使用 SQL IN 运算符搜索多个绝对值:

SELECT userid FROM tablename WHERE name IN ('Value1', 'Value2', ...);

如果您想使用 LIKE,则需要使用 OR 来代替:

SELECT userid FROM tablename WHERE name LIKE '%Value1' OR name LIKE '%Value2'; 使用 AND(正如您尝试的那样)要求所有条件都为真,使用 OR 则要求至少有一个条件为真。

在这里您将获得用户 ID 列表,以及选择特定项目 value1,value2 的用户

对于 hibernate

您可以使用 native SQL 查询或创建查询。但搜索功能最好通过 Hibernate 搜索查询 DSL 实现

简单的方法是使用查询

Query query = session.createQuery("SELECT u FROM UserData u WHERE u.userRole IN (:roles)");
query.setParameterList("roles", roles);

更多信息请参见下面的链接

http://w3facility.org/question/jpa-get-all-rows-that-matches-multiple-strings/

更好、正确但更高级的方法可能是使用 Hibernate Search 查询 DSL

您可以使用此搜索多个字段中的多个关键字

基本语法

Query luceneQuery = queryBuilder
    .keyword()
      .wildcard()
    .onField("foo")
    .matching("bar*")
    .createQuery();

更多信息

http://hibernate.org/search/documentation/getting-started/

关于java - 将字符串与我的 ArrayList 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743944/

相关文章:

java - 使用 Lambda 添加 MessageHandler NullPointerException

java - AspectJ 的当前状态是什么?

java - 显示对话框时应用程序崩溃

java - 如何将元素放入数组列表的特定位置

java - 解析文本文件的最简洁方法

java - 删除后元素的 ID 会怎样?

java - 输入验证检查输入是否为 double

java - 方法返回类型来实现多个接口(interface) - 再次

java - 如何立即从内存中删除刚刚从 arraylist 中删除的值

java - 将 T 作为参数传递给以在 Java 中有条件地创建泛型