Java 如何在一行代码中获取和设置字符串数组?
我有一个字符串数组Java 如何在一行代码中获取和设置字符串数组?,java,android,Java,Android,我有一个字符串数组emails和一个字符串变量Category\u name。要获取并设置Category\u name的结果,我使用以下方法: holder.category_name.setText(mcategoryset.get(position).getCategory_name()); 但是对于电子邮件这是一个字符串数组,我会这样做: holder.category_emails.setText(mcategoryset.get(position).getEmails().get(
emails
和一个字符串变量Category\u name
。要获取并设置Category\u name
的结果,我使用以下方法:
holder.category_name.setText(mcategoryset.get(position).getCategory_name());
但是对于电子邮件
这是一个字符串数组,我会这样做:
holder.category_emails.setText(mcategoryset.get(position).getEmails().get(0));
i、 e.我只得到位置0的值。如何以编程方式获取所有值,而不是仅获取一个值?在POJO类中,对于电子邮件getter,请添加另一个getter,类似这样的内容
public String getFullEmails(){
StringBuilder emailString = new StringBuilder();
int length = emails.length();
for(for int=0; i<length; i++){
emailString.append(emails[i]);
if(i != length-1){
emailString.append(",\n");
}
}
return emailString.toString();
}
公共字符串getFullEmails(){
StringBuilder emailString=新建StringBuilder();
int length=emails.length();
对于(对于int=0;i,您可以使用java.util.Arrays,这是java提供的一种实用类方法来简化这些操作-
holder.category_emails.setText(Arrays.toString(mcategoryset.get(position).getEmails()));
其他选择包括:-
也有-ArrayUtils.toString(数组)
(但更喜欢JDK)
commons lang允许自定义分隔符-StringUtils.join(数组“,”)
还允许使用分隔符,并具有跳过空值的选项:Joiner.on(',').skipNulls().join(数组)
使用下面的代码
String emails = "";
for(int i = 0; i<mcategoryset.get(position).getEmails().size();i++){
emails = emails+mcategoryset.get(position).getEmails().get(i)+",";
}
holder.category_emails.setText(emails);
String电子邮件=”;
对于(int i=0;i请尝试以下方法:
final StringBuilder stringBuilder = new StringBuilder();
for (String email : categorySet.get(position).getEmails()) {
if (!stringBuilder.toString().isEmpty()) {
stringBuilder.append("\n");
}
stringBuilder.append(email);
}
holder.category_emails.setText(stringBuilder.toString());
我认为你应该重载你的函数,比如category\u emails.setText(String[])
或者对每个都使用来遍历值。对于android开发,你可以使用TextUtils lib作为holder.category\u emails.setText(TextUtils.join(,“,mcategoryset.get(position.getEmails()));
改用StringBuilder。请记住,字符串在Java中是不可变的。您在每+@Edd创建一个新的字符串,StringBuilder和字符串连接在执行小字符串连接时对性能的影响可以忽略不计。StringBuilder显然更适合于繁重的任务,但对于收到1到20封电子邮件,字符串连接on更具可读性,更易于管理。我还没有对其进行基准测试,但可以肯定的是,对于像这样的小任务,它不会像您所说的那样产生巨大的影响。不过,让读者了解StringBuilder还是不错的。我想您的答案对一般读者来说会更有益。我最近了解到使用串联的一个错误在循环中。所以我很早以前就更新了我的答案。谢谢你指出它。@EddSir,我在值的末尾也得到了“,”。我该怎么做才能删除末尾的逗号?