2015-10-28 65 views
0

我在我的OnCreate()中的字符串上有相同数量的2 Set<String>,其中一个Set<String>保存来自多个用户的消息,而另一个保存这些用户的名称。我想加入这两个Set<String>例如。可以说有3个消息和3个用户名,我需要Set<String>(“消息”)中的第一个字符串与Set<String>(“名称”)中的第一个字符串,然后是Set<String>(“消息”)中的第二个字符串与Set<String>(“名称”)中的第二个字符串一起去。使用2个字符串集合(合并它们)

我知道如何去通过所有的Set<String>,但我无法弄清楚如何用两个来获得我需要的结果。也许有人知道一种不同的方式?另一个例子:(3字符串名称)伊万,马克,史蒂夫(3字符串消息)嘿!,什么与你?,嗨。

我希望它加入这样的:(伊万送:嘿!)(马派:怎么了你)(史蒂夫发送:你好)

这是当我有我一直在做只有一个Set<String>

SharedPreferences prefMessage = getSharedPreferences(LocalDatabase.SP_NAME, MODE_PRIVATE); 
    Set<String> savedMessages = prefMessage.getStringSet("Message", new HashSet<String>()); 
    // Set<String> savedNames = prefShouts.getStringSet("Names", new HashSet<String>()); 


    if(savedMessages!=null) { 
     int numMsg = savedMessages.size(); 
     int i = 0; 

     for (String msg : savedMessages) { 
      i++; 

      newMessage(msg); //Creates alert Dialog, only sends message, need to include name aka seng newMessage(msg , name) 

      if (i == numMsg) { 

       savedMessages.clear(); 
       //savedNames.clear(); 


      } 

     } 
    } 
+1

'HashSet's不排序,也不联系,所以你可能需要一个纯字符串SharedPreference值'LinkedHashSet'(保留插入订单)或“TreeSet”(自然排序或使用给定的“比较器”)。 – Mena

+1

'Set'不好,使用持久订单的东西,例如'List'。甚至更好,使用'JSONObject',其中每个对象持有发送者,消息等 – nafas

回答

2

Set没有“first”的概念,因为sets是无序集合。您不能强制SharedPreferences以某种方式维护字符串集条目中值的顺序。

您将需要使用的数据存储的一些其他的形式,而不是一对字符串设定SharedPreference项,如:

  • 文件(XML,JSON等)
  • 数据库表(SQLite的)
  • 更多的结构化内容(XML,JSON等)