java - 如何返回所有内容,同时将其添加为字符串

标签 java generics arraylist return-value return-type

import java.util.*;
 public class Help {

 public static String fromSender(ArrayList<Message> messageList, String pname){

    for(int i=0; i<messageList.size(); i++){

        if(messageList.get(i).getSender().equals(pname)){
            pname = messageList.get(i).getContent() + " ";
        }
    }
    return pname;
   }

 public static void main(String[] args){
     ArrayList<Message> messageList= new ArrayList<Message>();
     messageList.add(new Message("UKMark","UKJohn","message1 "));
     messageList.add(new Message("John","Don","ah"));
     messageList.add(new Message("UKMark","UKJohn","message2 "));
     System.out.print(fromSender(messageList, "UKMark") );
  }
}

我试图测试这段代码,它的目的是打印 message1 message2 但它只打印 message1,为什么它在遍历整个数组并将其存储在 pname 中时会这样做

最佳答案

您可以通过将这行代码中的第一个匹配消息的内容分配给 fromSender 函数中的变量 pname 中的值来覆盖它 pname = messageList.get( i).getContent() + "";。因此,在其余的循环中,pname 实际上是第一个匹配的消息内容,不再是“UKMark”,因此第二条消息的发件人将不匹配。

只需使用另一个变量从 fromSender 函数返回即可。

public static String fromSender(ArrayList<Message> messageList, String pname){

    String result = "";
    for(int i=0; i<messageList.size(); i++){

        if(messageList.get(i).getSender().equals(pname)){
            result += messageList.get(i).getContent() + " ";
        }
    }
    return result;
}

关于java - 如何返回所有内容,同时将其添加为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36671928/

相关文章:

Java 文本区域未发布

generics - 在 kotlin 的 lambda 中使用多种泛型类型

swift - 这个层次结构应该如何运作?

java - 我想在对象数组的对象中打印一个方法,但不能。为什么?

java - Java中RNA序列转换为蛋白质的高效方法,以及arrayoutofbound错误

java - 使用 jSoup 格式化 html 文本输出

java - 为什么会延迟生成 Java String 哈希码?

java - 删除 ArrayList Java 中的重复元素

javascript - 获取嵌套对象的值

java - Collection.toArray() 方法,详细信息