2015-10-28 119 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等)