当前位置: 首页 > 知识库问答 >
问题:

返回数组列表中连接元素的字符串的方法

海叶秋
2023-03-14

我有一个方法toString,它应该返回数组列表的连接元素字符串。我遇到的问题是无法将T类型的数组列表(因为它应该是泛型的)转换为字符串。

public class RandomStuffContainer<T extends Comparable<T>>
{
       ArrayList<T> array = new ArrayList<T>();

    public  void main(String[] args){
     ArrayList<T> array = new ArrayList<T>();

        
    }
public String toString() {
       StringBuilder sb = new StringBuilder();
       ArrayList<String> data = (ArrayList<T>)array.clone();
        for (String s : data)
        {
            sb.append(s);
            sb.append("\t");
    }
         return  data.toString();
    }

共有2个答案

步致远
2023-03-14

下面的代码只是@camickr答案的后续,给出了将Java 8流API应用于所需的toString方法实现的示例:

import java.util.*;
import java.util.stream.*;

public class RandomStuffContainer<T extends Comparable<T>> {
    List<T> array = new ArrayList<T>();

    @Override
    public String toString() {
        return array.stream().map(Object::toString).collect(Collectors.joining("\t"));
    }

    // provide constructor, add/remove methods, etc. as needed
}
周飞
2023-03-14

我遇到的问题是无法将T类型的数组列表(因为它应该是泛型的)转换为字符串。

您不需要将其转换为字符串。当需要对象的字符串表示时,只需调用对象上的方法。

也不需要clone(),因为您不会更改ArrayList中的任何数据

import java.util.*;

public class RandomStuffContainer<T extends Comparable<T>>
{
    ArrayList<T> array = new ArrayList<T>();

    public  void main(String[] args)
    {
        ArrayList<T> array = new ArrayList<T>();
    }

    public String toString() 
    {
        StringBuilder sb = new StringBuilder();
        //ArrayList<String> data = (ArrayList<T>)array.clone(); // not needed

        //for (String s : array) // no need to use String here            
        for (T s : array)
        {
            //sb.append(s);
            sb.append(s.toString());
            sb.append("\t");
        }
        
        return  sb.toString();
    }
}

此外,您应该使用StringJoiner类而不是使用StringBuilder类。此类将自动为您追加分隔符,并且不会将分隔符添加到最后一个标记。

上述更改只会使代码得以编译。它仍然不是一个可用的类,因为您没有向ArrayList实际添加数据的方法,并且必须编写代码来创建RandomStuffContainer类的实例。

 类似资料:
  • 问题内容: 我有点困惑。我在任何地方都找不到答案;( 我有一个String数组: 然后我通过以下方式将其转换为字符串: 我期望得到字符串,但是我却得到了字符串。 我该如何在Java中做到这一点?我正在使用Eclipse IDE 问题答案: 使用 StringBuilder 而不是StringBuffer,因为它比StringBuffer快 。 样例代码 这是使用字符串连接的更好解决方案的原因:当连

  • 我有一个字符串数组,我将其按元素拆分,这样我就可以对其进行处理。现在我想把它们返回到一个句子中。 有没有一种方法可以在保留格式的同时将它们连接回一个句子?理想输出类似于以下内容:

  • 问题内容: 这是一个错误吗? 我正在尝试按元素进行字符串连接。我以为Add()是在numpy中执行此操作的方法,但显然它没有按预期工作。 问题答案: 这可以使用numpy.core.defchararray.add完成。这是一个例子: NumPy数据类型还有其他有用的字符串操作。

  • 问题内容: 我试图将字符串数组作为参数传递给Wetland类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表。 问题答案: 您已经具有内置方法:- 注 : -您应该使用没有。 返回一个不同的-> ,不能将其类型转换为。 然后,您将不得不使用方法,这不是很好。所以就用 注意 :-返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并用于向其中添加元素。所以,那

  • 问题内容: 在Java中,从两个字符串数组返回公共元素的最有效方法是什么?我可以用一对for循环来做到这一点,但这似乎并不是很有效。根据对类似SO问题的评论,我能想到的最好的方法是转换为a ,然后应用:) 问题答案: 编辑: 这是单线的: 该IMPL(类AbstractCollection中)遍历,以及用途的说法。将参数转换为a 将导致快速查找,因此a中的循环将尽快执行。 另外,名称暗示它是一个常

  • 我正在学习如何使用Spring靴和胸腺嘧啶。我有一个问题,我在表单列表中提供一个特定对象的列表到一个Thymeleaf页面。当用户选择值并发布结果时,结果是所选对象的字符串,并且与我想要存储值的对象不兼容。 这可能听起来像一口,所以下面是代码。 输入:一个类将一组成分传递给表单,这个类在一个类成分列表中传递给表单(过滤对此无关紧要--插入一个列表作为model属性的值,键是一种成分类型) Thym