将String与我的ArrayList进行比较

时间:2015-04-20 09:25:55

标签: 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");

这些是有人可以选择他喜欢的东西的东西。 如果他选择&#34; Inne&#34; ,那么他必须输入他喜欢的其他东西,这个ArrayList不包含。

它被写入数据库:

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

在一个字符串中。

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

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

我需要做的是根据ArrayList zainteresowanka搜索列表,所以我可以选择例如&#34; Java,iOS&#34; ,我得到所有人谁选择了那些。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

据我所知

您有一个arraylist,其中包含可由用户选择的项目。您将所选项目保存到数据库。然后你需要让选择了一些项目的用户,例如“windows phone”,例如

首先,您需要为不同的用户分配ID以区分它们。

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

例如

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

然后你需要搜索特定项目(value1,value2)的数据库(假设mysql或sql)。您可以使用“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要求至少有一个为真。

在这里,您将获得userid列表,从而获得选择特定项目的用户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/