【问题标题】:typical operations on stored string in javajava中存储字符串的典型操作
【发布时间】:2017-08-19 20:17:55
【问题描述】:

Java 中存储字符串然后对其进行一些操作的最佳数据结构是什么:(Java 初学者)

输入:Sam Mohit Laksh Nitesh Aquib

我知道我可以将它们中的每一个存储在数据结构中,例如 ArrayList 等。 但如果我将它们存储为:

Scanner sc= new Scanner(System.in);
ArrayList<String> list = new ArrayList<String>();
then  iterating and adding them as:
for(int i=0;i<n;i++)
//let n be any number
{
   List.add(sc.next());
}

但是如果我想将 Mohit 之类的单词转换为 char 数组,如 ['M','o','h','i','t']

这样 char[0]='M' 或 char[3]='i' 我知道我可以遍历 MyArrayList 类型的迭代器对象。但是该迭代器可以转换为 char 数组吗?

【问题讨论】:

  • 执行myString.toCharArray() 以从字符串中获取字符数组
  • 否则这个问题读起来有点像XY Problem,让我想知道产生这个问题的根本问题是什么。
  • 但该对象是arraylist,我认为可以通过迭代器访问它,因此 toCharArray 不适用于它。 @davidxxx
  • @DontKnowMuchButGettingBetter 如果我必须比较给定字符集的字符串字符该怎么办。
  • 请edit 向我们确切地向我们展示您正在尝试做什么,包括输入、输出和堆栈跟踪(如果有)。真的很难把你所有的 cmets 拼凑成一个连贯的问题。

标签: java arrays string arraylist linked-list


【解决方案1】:

但是该迭代器可以转换为字符数组吗?

是的,Iterator#next() 会给你字符串(因为 List 有泛型 String),可以用来执行任何类型的字符串操作。看下面的代码把它放在main方法中运行。

    String[] str = {"Sam", "Mohit", "Laksh", "Nitesh"};
    List<String> list = new ArrayList<String>();
    for(int i=0;i<str.length;i++)
    {
       list.add(str[i]);
    }

    Iterator<String> iter = list.iterator();
    while(iter.hasNext()){
        //here apply some condition to get your specific string object
        char[] chars = iter.next().toCharArray();
        System.out.println(chars);
    }

【讨论】:

  • 我认为迭代器毕竟不是必需的 Btw 它也很有帮助!
  • @imshashi17 我知道我们可以直接用于每个循环,但问题是专门针对迭代器提出的,这就是为什么我使用迭代器来描述它会起作用的原因
【解决方案2】:

我会建议使用 ArrayList 和流来转换其他内容:

    List<String> words = new ArrayList<>();
    words.add("John");
    words.add("Mohito");

将List&lt;String&gt; 转换为List&lt;char[]&gt;:

    List<char[]> asChar = words.stream()
            .map(String::toCharArray)
            .collect(Collectors.toList());

用于将 char[] 转换为 List&lt;Character&gt;:

    char[]  cc = new char[]{'a', 'b'};
    List<Character> collect1 = String.valueOf(cc)
            .chars()
            .mapToObj(i -> (char) i)
            .collect(Collectors.toList());

从列表中获取字符:

String letter = collect1.get(0).toString();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多