在Java中,我想知道Integer
中是否有ArrayList<Integer>
。
我尝试使用this general solution,它警告不能使用基元数组。这应该不是问题,因为Integer
不是基元(int
是)。
ArrayList<Integer> ary = new ArrayList<Integer>();
ary.add(2);
System.out.println(String.format("%s", Arrays.asList(ary).contains(2)));
返回false
。
有什么理由吗?
任何帮助都值得赞赏,尽管越少越好。
答案 0 :(得分:4)
它返回
false
的原因是什么?
只是因为Arrays.asList(ary)
会返回List<ArrayList<Integer>>
,并且您尝试查找它是否包含Integer
无法正常工作。
这里的剩余部分是Arrays.asList(ary)
public static <T> List<T> asList(T... a)
返回固定大小的列表 由指定的数组支持。
在您提供ArrayList<Integer>
作为参数时,它会返回您提供的List
个List<ArrayList<Integer>>
。
您需要在列表中拨打ary.contains(myInteger)
,如public class SpinnerActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
Spinner s1 = (Spinner) findViewById(R.id.contacts_spinner);
Spinner s2 = (Spinner) findViewById(R.id.howOften_spinner);
final int adapterItemLayout = android.R.layout.simple_spinner_item;
final int dropdownItemLayout = android.R.layout.simple_spinner_dropdown_item;
ArrayAdapter<CharSequence> resourceAdapter = ArrayAdapter.createFromResource(this, R.array.howOften, adapterItemLayout);
ArrayAdapter<String> dynamicAdapter = new ArrayAdapter<String>(this, adapterItemLayout);
resourceAdapter.setDropDownViewResource(dropdownItemLayout);
dynamicAdapter.setDropDownViewResource(dropdownItemLayout);
s1.setAdapter(resourceAdapter);
s2.setAdapter(dynamicAdapter);
dynamicAdapter.add("bla - 1");
dynamicAdapter.add("bla - 2");
}
}
。
答案 1 :(得分:1)
您不需要asList()
作为ArrayList本身的列表。您也不需要String.format()
来打印结果。就是这样做。这将返回true
:
System.out.println(ary.contains(2));
答案 2 :(得分:1)
问题是你正在尝试将ArrayList强制转换为List。 Arrays.asList接受一个数组或可变数量的参数,并将所有这些参数添加到列表中。您需要做的就是调用System.out.println(ary.contains(2));