Java 使用2个字符串集(组合它们)

Java 使用2个字符串集(组合它们),java,android,arrays,string,hashset,Java,Android,Arrays,String,Hashset,在我的OnCreate()中,有两个Set字符串的数量相同,一个Set保存来自多个用户的消息,另一个保存这些用户的姓名。我想加入这两个集合例如,假设有3条消息和3个用户名,我需要集合(“消息”)中的第一个字符串与集合(“名称”)中的第一个字符串一起,然后集合(“消息”)中的第二个字符串与集合(“名称”)中的第二个字符串一起。。就这样 我知道如何遍历所有的集合,但我不知道如何使用两个来获得我需要的结果。也许有人知道另一种方式?另一个例子:(3个字符串名称)Ivan,Mark,Steve(3个字符串

在我的
OnCreate()
中,有两个
Set
字符串的数量相同,一个
Set
保存来自多个用户的消息,另一个保存这些用户的姓名。我想加入这两个
集合
例如,假设有3条消息和3个用户名,我需要
集合
(“消息”)中的第一个字符串与
集合
(“名称”)中的第一个字符串一起,然后
集合
(“消息”)中的第二个字符串与
集合
(“名称”)中的第二个字符串一起。。就这样

我知道如何遍历所有的
集合
,但我不知道如何使用两个来获得我需要的结果。也许有人知道另一种方式?另一个例子:(3个字符串名称)Ivan,Mark,Steve(3个字符串消息)嘿!,你怎么了?嗨

我希望它像这样加入:(伊万·森特:嘿!)(马克·森特:你怎么了?)(史蒂夫·森特:你好。)

这就是我在只有一套
时一直在做的事情

SharedReferences prefMessage=GetSharedReferences(LocalDatabase.SP\u NAME,MODE\u PRIVATE);
Set savedMessages=prefMessage.getStringSet(“Message”,new HashSet());
//Set savedNames=prefShouts.getStringSet(“名称”,new HashSet());
if(savedMessages!=null){
int numsg=savedMessages.size();
int i=0;
for(字符串消息:savedMessages){
i++;
newMessage(msg);//创建警报对话框,仅发送消息,需要包含名称aka seng newMessage(msg,name)
如果(i==numsg){
savedMessages.clear();
//savedNames.clear();
}
}
}

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

您需要使用其他形式的数据存储,而不是一对字符串集
SharedReference
项,例如:

  • 文件(XML、JSON等)
  • 数据库表(SQLite)
  • 包含更多结构化内容(XML、JSON等)的普通字符串
    SharedReference

  • HashSet
    s既没有排序也没有链接,因此您可能需要一个
    LinkedHashSet
    (保留插入顺序)或
    TreeSet
    (自然排序或使用给定的
    Comparator
    )。
    Set
    不好,请使用一些保存顺序的东西,例如
    List
    。更好的是,在每个对象包含发送者、消息等的地方使用
    JSONObject
    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();
    
    
               }
    
           }
       }