相关疑难解决方法(0)

如何将ArrayList <Object>转换为ArrayList <String>?

ArrayList<Object> list = new ArrayList<Object>();
list.add(1);
list.add("Java");
list.add(3.14);
System.out.println(list.toString());
Run Code Online (Sandbox Code Playgroud)

我试过了:

ArrayList<String> list2 = (String)list; 
Run Code Online (Sandbox Code Playgroud)

但它给了我一个编译错误.

java arraylist

88
推荐指数
8
解决办法
15万
查看次数

在Java中将List <Object>转换为String []

我需要转换List<Object>String[].

我做了:

List<Object> lst ...
String arr = lst.toString();
Run Code Online (Sandbox Code Playgroud)

但我得到了这个字符串:

["...", "...", "..."]
Run Code Online (Sandbox Code Playgroud)

只是一个字符串,但我需要String []

非常感谢.

java arrays string list

16
推荐指数
4
解决办法
9万
查看次数

toArray(T [] a)和toArray()之间的区别

我一直在学习如何使用java进行编程,而且我没有对LinkedLists toArray(T[] a)toArray()方法的区别做出任何明确的解释.第二个只是将LinkedList对象中的所有元素作为数组返回,对吧?但是,第一个怎么样?

编辑:

我的意思是,我从oracle阅读文档,它说:

以适当的顺序返回包含此列表中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型.如果列表适合指定的数组,则返回其中.否则,将使用指定数组的运行时类型和此列表的大小分配新数组.如果列表适合指定的数组,并且空间足够(即,数组的元素多于列表),则紧跟在列表末尾的数组中的元素将设置为null.(仅当调用者知道列表不包含任何null元素时,这在确定列表长度时很有用.)

与toArray()方法一样,此方法充当基于数组的API和基于集合的API之间的桥梁.此外,该方法允许精确控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本.

我不明白以粗体显示的句子的含义.

java list toarray

8
推荐指数
1
解决办法
7199
查看次数

将double数组转换为float数组

我有一个double [] []数组,我希望将一行放入float []数组中.铸造最初没有起作用,所以我寻找不同的东西.

在stackoverflow中找到一个优雅的解决方案,将Object []转换为String [],如果我将Object []转换为float [],它也可以工作.

所以:有没有优雅的方法将double []转换为float [],或者将double []转换为Object [],以便我可以在其他帖子中使用代码?

我将提供一个我正在做的示例代码,即使我认为它不是必要的:

double[][] datos = serie.toArray();
double[][] testArray = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
double[] doubleArray = Arrays.copyOf(testArray[1], testArray[1].length);
// This would be great but doesn't exist:
//float[] floatArray = Arrays.copyOf(doubleArray, doubleArray.length, float[].class);
Run Code Online (Sandbox Code Playgroud)

java arrays floating-point double

7
推荐指数
2
解决办法
3万
查看次数

将Object []转换为java中的引用类型数组

在通用堆栈的实现中,使用以下习语并且没有任何问题

public class GenericStack<Item> {
    private int N;
    private Item[] data;    

    public GenericStack(int sz) {
        super();
        data = (Item[]) new Object[sz];

    }
        ...
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以下操作时,它会导致ClassCastException

String[] stra = (String[]) new Object[4];

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Run Code Online (Sandbox Code Playgroud)

你怎么解释这个?

java arrays generics classcastexception

6
推荐指数
1
解决办法
1357
查看次数

将Serializable数组从一个活动传递到另一个活动时的类Cast Exception

我有一个包含可序列化对象的数组,我试图使用Intent的putExtra()和Bundle的getSerializable().但是,我得到一个类强制转换异常并且不明白为什么.

下面是代码.UserInfo是我自己的类,它实现了Serializable,我能够在活动之间传递单个UserInfo对象.我在尝试使用数组时遇到了这个问题.

发送序列化的代码:

Intent intent = new Intent( JOIN_GROUP ); //JOIN_GROUP is a constant string

String user_ids[] = packet.userIDs();

int length = user_ids.length;
UserInfo users[] = new UserInfo[length];

for ( int i = 0; i < length; ++i )
    users[i] = getUserByID( user_ids[i] );

intent.putExtra( USERS_IN_GROUP, users );
Run Code Online (Sandbox Code Playgroud)

检索序列化的代码:

Bundle extra = intent.getExtras();          
String action = intent.getAction();

if ( action.equals(IMService.JOIN_GROUP) )
{   
    //CLASS CAST EXCEPTION
    UserInfo users[] = (UserInfo[]) extra.getSerializable( IMService.USERS_IN_GROUP ); 
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

在此输入图像描述

我知道我可能只是使用不同的数据结构,但我想理解为什么数组不可行,因为数组是可序列化的?

编辑: SnyersK能够得到一个更简单但类似的方案来工作.所以我尝试了同样的事情,我仍然得到同样的例外.在检索数组时,它将我的测试数组转换为Object,这导致了转换异常.

我的测试对象:

package …
Run Code Online (Sandbox Code Playgroud)

java arrays serialization android

5
推荐指数
1
解决办法
3390
查看次数

在Android上反序列化数组

我正在开发一个大应用程序,我发现了一个小细节.可以序列化Arrays并将它们放在一个包中.然后将其置于意图中并开始活动.但是在接收端,我必须通过痛苦的两步程序对阵列进行反序列化.

     MyObj[] data = (MyObj[])bundle.getSerializable("key"); // doesn't work

     Object[] temp = (Object[])bundle.getSerializable("key");
     MyObj[] data2 = (MyObj[])temp, // doesn't work

     MyObj[] data3 = new MyObj[temp.length]; // does work
     for(int i = 0; i < temp.length; i++) {
          data3[i] = (MyObj)temp[i];
     }
Run Code Online (Sandbox Code Playgroud)

我必须经历数组循环的原因是什么?

java android

1
推荐指数
1
解决办法
1656
查看次数

在Java中将对象转换为数组

可能重复:
如何在Java中将对象数组转换为字符串数组

我收到一个Object并将其转换为String数组,如下所示:

Object values[] = (Object[])request.getSession().getAttribute("userList");
String[] tmp = new String[values.length];
for(int i = 0; i < tmp.length; ++i) {
     tmp[i] = (String) values[i];
     out.println(tmp[i]);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好,更清洁的方法来做到这一点?

java arrays casting

1
推荐指数
1
解决办法
1万
查看次数

泛型与阵列

我在许多答案(例如,这个)中看到,使用泛型创建数组的方法如下:

T[] array = (T[]) new Object[SIZE];
Run Code Online (Sandbox Code Playgroud)

我想尝试做类似的事情:

EntryRecipient<K,V>[] array = (EntryRecipient<K,V>[]) new Object[MAX_SIZE];
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,抛出以下错误:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LHashTable$EntryRecipient;
Run Code Online (Sandbox Code Playgroud)

我的代码是:

HashTableEntry(包含在HashTable的私有子类中)

class HashTableEntry<K,V> {
    private K key;
    private V value;

    public HashTableEntry(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public V value() {
        return value;
    }

    public K key() {
        return key;
    }
}
Run Code Online (Sandbox Code Playgroud)

EntryRecipient(作为HashTable的私有子类包含)

private class EntryRecipient<K,V> {
    private List<HashTableEntry<K,V>> entries;

    public EntryRecipient() { …
Run Code Online (Sandbox Code Playgroud)

java arrays generics

1
推荐指数
1
解决办法
151
查看次数

展开数组而不知道其类型

如何在不知道其类型的情况下展开数组?

我有一个Object[],我知道它只包含Car例如实例.当我尝试将其类型转换为a时Car[],它会抛出ClassCastException.我在一个没有Generics的环境中工作.

我必须使用for循环手动将每个元素复制到一个新数组中,如下所示:

Car[] cars = new Car[objects.length];
for (int i = 0; i < objects.length; i++) {
    cars[i] = (Car) objects[i];
}
Run Code Online (Sandbox Code Playgroud)

java arrays

0
推荐指数
1
解决办法
289
查看次数