在Android中将ArrayList转换为String数组

Posted

技术标签:

【中文标题】在Android中将ArrayList转换为String数组【英文标题】:Convert ArrayList to String array in Android 【发布时间】:2011-12-26 07:55:17 【问题描述】:

我有一个 ArrayList,其中包含 [ann,john] 形式的值。我想将此 ArrayList 转换为 "ann","john" 形式的字符串数组。

我应该怎么做?

我的安卓代码:

     final Button markabsent = (Button) findViewById(R.id.Button02);
      markabsent.setOnClickListener(new View.OnClickListener() 
          public void onClick(View v) 

            // Perform action on click
             Toast.makeText(display.this,"You have marked the students absent",Toast.LENGTH_SHORT).show();

             SparseBooleanArray checkedabsent = lView.getCheckedItemPositions();



            for (int i = 0; i < arr2.length; i++) 
            
                if (checkedabsent.get(i)) 
                
                    items2.add(arr2[i]);
                    System.out.println(items2);

                
            

            Log.d("", "items:");
            for (String string : items2)
            
                Log.d("string is", string);


              
          
      );  

我的日志猫:

     11-10 21:44:00.414: INFO/System.out(2316): [ann, john, ann]
     11-10 21:44:00.414: DEBUG/(2316): items:
     11-10 21:44:00.414: DEBUG/string is(2316): ann
     11-10 21:44:00.414: DEBUG/string is(2316): john

我尝试做答案中提到的所有事情,但我的 logcat 似乎并没有改变

这是一个例外:

          11-10 22:14:20.855: INFO/System.out(3322): [Ljava.lang.String;@44eb6ff0
          11-10 22:16:38.186: ERROR/androidRuntime(3411): FATAL EXCEPTION: main
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411): java.lang.ClassCastException: [Ljava.lang.Object;
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.java:124)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.view.View.performClick(View.java:2408)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.view.View$PerformClick.run(View.java:8816)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.os.Handler.handleCallback(Handler.java:587)

还有一个:

          11-10 22:14:20.875: DEBUG/string is(3322): ann
          11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.885: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.895: DEBUG/string is(3322): john
          11-10 22:14:20.895: INFO/System.out(3322): [Ljava.lang.String;@44eb7de8
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.java:124)

【问题讨论】:

Convert ArrayList containing Strings to an array of Strings in Java?的可能重复 【参考方案1】:

使用方法“toArray()”

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
Object[] mStringArray = mStringList.toArray();

for(int i = 0; i < mStringArray.length ; i++)
    Log.d("string is",(String)mStringArray[i]);

或者你可以这样做:(在其他答案中提到)

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
String[] mStringArray = new String[mStringList.size()];
mStringArray = mStringList.toArray(mStringArray);

for(int i = 0; i < mStringArray.length ; i++)
    Log.d("string is",(String)mStringArray[i]);

http://developer.android.com/reference/java/util/ArrayList.html#toArray()

【讨论】:

这里的问题与 Casey 的原始帖子相同:toArray() 返回一个 Object[],它不能转换为 String[] 。介意编辑您的答案吗? 当然,刚刚修复它并添加了第二种选择,即首先创建数组,然后将其作为参数传递给 toArray() 方法 请在 Log.d("string is",(mStringArray[i]); 中添加一个结束 );【参考方案2】:

一般来说:

List<String> names = new ArrayList<String>();
names.add("john");
names.add("ann");

String[] namesArr = new String[names.size()];
for (int i = 0; i < names.size(); i++) 
    namesArr[i] = names.get(i);  

或者更好的是,使用内置:

List<String> names = new ArrayList<String>();
String[] namesArr = names.toArray(new String[names.size()]);

【讨论】:

如果我执行 SOPln(namesArr) 的 println,则以您的第一种方式 .. 我得到这个:pastie.org/2842530 对于第二个问题,您需要遍历数组以打印值。 不用new String[names.size()]new String[0]也应该可以。【参考方案3】:
String[] array = new String[items2.size()];
items2.toArray(array);

【讨论】:

如果我使用它,我会在 logcat 的数组 SOP 上得到类似的东西:pastie.org/2842530。为什么我在“array”中没有得到“john”、“ann”? 那是因为一个 array 转换为一个 String 看起来就像那样。如果你想 System.out.println() 数组的元素,你必须自己实现 - 不像 ArrayList 已经有自己的 toString 实现(). 那么我该如何实现呢?怎么知道String“array”的内容..还有其他方法吗?【参考方案4】:

我知道我很晚才回答这个问题。但它会帮助别人,我也被困在这一点上。

这是我为使其工作所做的工作。

String[] namesArr = (String[]) names.toArray(new String[names.size()]);

【讨论】:

【参考方案5】:
try this

List<String> list = new ArrayList<String>();
list.add("List1");
list.add("List2");

String[] listArr = new String[list.size()];
listArr = list.toArray(listArr );

for(String s : listArr )
    System.out.println(s);

【讨论】:

【参考方案6】:

你可以试试这个代码

String[] stringA = new String[stringArrayList.size()];
stringArrayList.toArray(stringA)
System.out.println(stringA[0]);

【讨论】:

【参考方案7】:

您可以创建一个与ArrayList 大小相同的数组,然后创建一个迭代的 for 循环来索引项目并将它们插入到数组中。

【讨论】:

以上是关于在Android中将ArrayList转换为String数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中将 JSONArray 转换为 ListView? [复制]

在 Java 中将 'ArrayList<String> 转换为 'String[]'

在 Java 中将 'ArrayList<String> 转换为 'String[]'

如何在 PowerShell 中将 HashSet 转换为 ArrayList?

如何在 Kotlin 中将字符串数组 JSON 转换为 ArrayList?

如何在c#中将ArrayList转换为字符串数组(字符串[])