回答
两个INT(整数包装)和数组的公共基类使用boths组成的附配的对象是Object 。因此使用Object类型创建ArrayList。
ArrayList<Object> list= new ArrayList<Object>();
但这不正确的做法解决这个问题并没有使用泛型这里,使运行时的安全性。因此,重新设计您的程序并将每种类型分配到单独的列表中或使用任何其他适当的类型。
使用一个具有int
和一个数组作为其实例变量的类。然后创建一个ArrayList
像
import java.util.ArrayList;
public class Hello {
public static void main(String[]args) {
ArrayList<Intarray> myArrayList = new ArrayList<Intarray>();
int[] arr = {3,4,5};
myArrayList.add(new Intarray(2,arr));
}
}
class Intarray {
private int numbers;
private int[] myArray;
public Intarray(int numbers, int[] myArray){
this.numbers = numbers;
this.myArray = myArray;
}
}
尽管这是实现预期结果的好方法;这需要一个整数和一个数组,我相信海报要么或...不是两个。 –
在你的列表需要的所有对象泛化水平创建数组列表。在这种情况下,即int和array,它是java.lang.Object。
这里的一个小的测试我跑:
public static void main(String[] args) {
List<Object> both = new ArrayList<Object>();
both.add(1);
both.add(args);
System.out.println(both);
}
产地: [1,[Ljava.lang.String; @ 1db9742]
作为@AbtPst建议的,最合适的解决办法是将有一个列表清单。这可以通过许多不同的方式完成。就个人而言,我会创建一个具有两个构造函数的类。
class NumericElement
{
private ArrayList<int> elements;
public NumericElement(int newElement)
{
elements = new ArrayList<int>();
elements.add(newElement);
}
public NumericElement(ArrayList<int> newElements)
{
elements = new ArrayList<int>(newElements); // copying array elements to the new array.
}
public ArrayList<int> getElements()
{
return elements;
}
}
可以定义一个List
类与类型安全接口,隐藏不安全List<Object>
作为内部实现细节。
这是比直接使用List<Object>
更多的工作。如果您的列表仅由一个类使用,则只需使用List<Object>
作为该类的实现细节。 但是,如果您的列表暴露于不止一个类的访问,请考虑使用这种类型安全的方法。
首先,定义一个接口,它可以表示int或int数组。
public interface IScalarOrArrayInt { }
,并定义为每一个可能的元素类型的子接口:
public interface IScalarInt extends IScalarOrArrayInt {
public int getScalarInt();
}
public interface IArrayInt extends IScalarOrArrayInt {
public int[] getIntArray();
}
然后定义列表类和它的代表性。它的界面可以是List<IScalarOrArrayInt>
。 该表示可以是List<Object>
,因此您可以直接将Integer和int []对象放入其中,而无需包装对象。
public class ListOfScalarsAndArray extends AbstractList<IScalarOrArrayInt> {
private static List<Object> m_list = new ArrayList<Object>();
由于AbstractList
文档中提到的,你要定义一些方法来允许修改您的列表。您可以将它们委托给内部列表,但是包装返回值。
@Override
public void add(int index, IScalarOrArrayInt element) {
m_list.add(index, element);
}
@Override
public IScalarOrArrayInt remove(int index) {
return wrap(m_list.remove(index));
}
@Override
public IScalarOrArrayInt set(int index, IScalarOrArrayInt element) {
return wrap(m_list.set(index, element));
}
呼叫者的方便,你可以添加一些方法接受展开的int
或int[]
。例如:
public void add(int element) {
m_list.add(element);
}
public void add(int[] element) {
m_list.add(element);
}
要满足标准列表<>接口,可以包装返回值。你的班级控制着内部列表,所以它只能控制列表成员的可能类型。
private IScalarOrArrayInt wrap(Object o) {
if (o instanceof Integer) {
final int i = (Integer) o;
return new IScalarInt() {
@Override
public int getScalarInt() {
return i;
}
};
}
else {
assert(o instanceof int[]);
final int[] a = (int[]) o;
return new IArrayInt() {
@Override
public int[] getIntArray() {
return a;
}
};
}
}
- 1. 试图创建一个Javascript数组,我可以转换为Json
- 2. 创建一个数组,并设置我试图创建一个数组值
- 3. 如何创建一个整数ArrayList?
- 4. 试图创建一个动态数组
- 5. 创建一个接受数组输入的参数
- 6. 我可以创建一个接受空值<something>的通用函数吗?
- 7. 从一个整数创建numpy数组
- 8. 动态创建一个整数数组
- 9. 我可以创建一个将接受函数和函数作为参数的谓词吗?
- 10. 创建一个“接受一个正整数”的函数是什么意思?
- 11. C# - 创建一个可以接受任意数量参数的EventHandler
- 12. 试图用tapped1.view.tag创建一个可变数组
- 13. 从多个整数数组创建一个字符串数组
- 14. 在TransactSQL中,是否可以创建一个接受可变数量参数(可选参数)的函数?
- 15. 我可以用Cython创建一个静态C数组吗?
- 16. 我可以在C中创建一个Char指针数组吗?
- 17. 我可以创建一个列表模型到数组中吗?
- 18. 我们可以创建一个泛型类的数组吗?
- 19. 我可以创建一个JavaScript函数的链接点吗?
- 20. 创建一个可接受参数的Observable
- 21. 创建一个算法,可以排序字符串/整数数组
- 22. 接受两个整数数组并返回合并数组
- 23. 试图创建一个数组持有一个结构?
- 24. 我可以创建一个特定类的实例的ArrayList?
- 25. 我们可以在C++中创建一组数组吗?
- 26. 我可以在Microchip C18中创建一个同时接受ram和rom指针的函数吗?
- 27. 创建整数数组
- 28. 我可以将一组ArrayList添加到单个ArrayList中吗?
- 29. 我可以使用lambda来接受两个参数在Python和使用地图
- 30. 如何在bashrc中创建一个函数来接受参数?
创建一个新类 – AbtPst
只需创建您的对象并添加数组和整数......问题是什么? –
另一个简单的方法是将int作为一个元素列表处理。这样,你可以列出一张清单 – AbtPst