Java 如何从Object[]转换为int[]
我想将Java 如何从Object[]转换为int[],java,vector,cosine-similarity,Java,Vector,Cosine Similarity,我想将myVector传递给另一个类(Case.java),但我收到了这种错误消息。类型不匹配:无法从Object[]转换为int[]。有人能告诉我怎么解决这个问题吗 User.java JButton btnNewButton = new JButton("Process"); btnNewButton.setBounds(360, 296, 89, 23); contentPane.add(btnNewButton); btnNewButton.addActionListener(new
myVector
传递给另一个类(Case.java
),但我收到了这种错误消息。类型不匹配:无法从Object[]转换为int[]。有人能告诉我怎么解决这个问题吗
User.java
JButton btnNewButton = new JButton("Process");
btnNewButton.setBounds(360, 296, 89, 23);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Integer a = (comboBox.getSelectedIndex() + 1);
Integer b = (comboBox_1.getSelectedIndex() + 1);
Integer day = (comboBox_2.getSelectedIndex() + 1);
ArrayList<Integer> myVector = new ArrayList<Integer>();
myVector.add(a);
myVector.add(b);
myVector.add(day);
Case ca = new Case();
try {
ca.addPlace(myVector);
LoginGUI um = new LoginGUI();
um.setVisible(true);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public class Case {
public Case() {
// TODO Auto-generated constructor stub
}
public void addPlace(ArrayList<Integer> h) {
int vec1[] = h.toArray();
int vec2[] = {2, 1, 3, 2};
double cos_sim = cosine_similarity(vec1, vec2);
}
JButton btnNewButton=新JButton(“过程”);
btnNewButton.setBounds(360,296,89,23);
contentPane.add(btnewbutton);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
整数a=(comboBox.getSelectedIndex()+1);
整数b=(组合框_1.getSelectedIndex()+1);
整数天=(组合框2.getSelectedIndex()+1);
ArrayList myVector=新的ArrayList();
添加(a);
添加(b);
myVector.add(天);
案例ca=新案例();
试一试{
ca.addPlace(myVector);
LoginGUI-um=新的LoginGUI();
可见(真);
}捕获(异常e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
}
}
Case.java
JButton btnNewButton = new JButton("Process");
btnNewButton.setBounds(360, 296, 89, 23);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Integer a = (comboBox.getSelectedIndex() + 1);
Integer b = (comboBox_1.getSelectedIndex() + 1);
Integer day = (comboBox_2.getSelectedIndex() + 1);
ArrayList<Integer> myVector = new ArrayList<Integer>();
myVector.add(a);
myVector.add(b);
myVector.add(day);
Case ca = new Case();
try {
ca.addPlace(myVector);
LoginGUI um = new LoginGUI();
um.setVisible(true);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public class Case {
public Case() {
// TODO Auto-generated constructor stub
}
public void addPlace(ArrayList<Integer> h) {
int vec1[] = h.toArray();
int vec2[] = {2, 1, 3, 2};
double cos_sim = cosine_similarity(vec1, vec2);
}
公共类案例{
公案({
//TODO自动生成的构造函数存根
}
公共无效地址(ArrayList h){
int vec1[]=h.toArray();
int vec2[]={2,1,3,2};
双余弦相似性=余弦相似性(vec1,vec2);
}
我们无法将对象[]
转换为int[]
。这两个类是水平的
如果需要,可以将对象[]
转换为整数[]
包装类,并使用显式下转换
Object[] obj ={10,30,20,100};
Integer[] in = (Integer[]) obj;
将新数组传递给
toArray
方法。如下所示:
Integer[] vec = h.toArray(new Integer[h.size()]);
使用Java8,这是可能的:
int[] vec1 = h.stream().filter(t -> t != null).mapToInt(t -> t).toArray();
我想您必须执行手动转换:
ArrayList<Integer> h = new ArrayList<>();
int[] result = new int[h.size()];
int index = 0;
for(int val:h){
result[index++] =val;
}
ArrayList h=新的ArrayList();
int[]结果=新的int[h.size()];
int指数=0;
用于(int val:h){
结果[index++]=val;
}
当然,如果您在原始ArrayList“h”中有空值,它可能会抛出NullPointerException。首先,您没有将
对象[]
转换为int[]
,您在这里所做的是ArrayList
转换为int[]
。您得到的错误无法从对象[]转换为int[]是因为Integer[]
不能直接转换为int[]
因此,任何方法都不可能直接实现这一点。但您可以像这样做:-
int[] vec1= new int[h.size()];
int index = 0;
for(int i : h){
vec1[index] = i;
index++;
}
但是,如果您可以将int[]vec1
更改为integer[]vec1
,则可以执行以下操作:-
Integer[] vec1 = h.toArray(new Integer[h.size()]);
这可能会引发NullPointerException。您需要过滤掉null值,或者在映射函数中处理它们。可能的重复项将不起作用。Gives
java.lang.ClassCastException:[Ljava.lang.Object;无法转换为[Ljava.lang.Integer;
这就是答案。