在本文中,我们将为您详细介绍java–如何使用putStringArrayListExtra()传递ArrayList的相关知识,并且为您解答关于java中如何传递一个数组参数的疑问,此外,我们还会提
在本文中,我们将为您详细介绍java – 如何使用putStringArrayListExtra()传递ArrayList的相关知识,并且为您解答关于java中如何传递一个数组参数的疑问,此外,我们还会提供一些关于ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?、ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象、ArrayList, LinkedList, CopyOnWriteArrayList, Vector对比、ArrayList.toArray()中的Java泛型 - Java generics in ArrayList.toArray()的有用信息。
本文目录一览:- java – 如何使用putStringArrayListExtra()传递ArrayList(java中如何传递一个数组参数)
- ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?
- ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象
- ArrayList, LinkedList, CopyOnWriteArrayList, Vector对比
- ArrayList.toArray()中的Java泛型 - Java generics in ArrayList.toArray()
java – 如何使用putStringArrayListExtra()传递ArrayList(java中如何传递一个数组参数)
嗨,我想将一个Arraylist从一个活动传递到另一个活动.我使用putStringArrayListExtra(),但是显示错误:“方法putStringArrayListExtra(字符串,ArrayList未定义类型包.”是否有任何其他方法可用于传递ArrayList?
String test[]=new String[3];
ArrayList<String[]> al=new ArrayList<String[]>();
int x,y;
test[0]="1";
test[1]="2";
test[2]="3";
al.add(test);
test = new String[3];
test[0]="4";
test[1]="5";
test[2]="6";
al.add(test);
Bundle list_bundle=new Bundle();
list_bundle.putStringArrayListExtra("lists",al);
Intent list_intent= new Intent(v.getContext(), view_all_selected.class);
list_intent.putExtras(list_bundle);
startActivityForResult(list_intent, 2);
解决方法:
尝试下面的一个将1-D数组传递给附加组件中的Arraylist
ArrayList<String> al = new ArrayList<String>();
String arr[] = {"Zero", "One", "Two"};
//Convert string array to a collection
Collection l = Arrays.asList(arr);
al.addAll(l);
i.putStringArrayListExtra("ar", al);
ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?
ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?
ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象
java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
1.刚刚看到的时候,也是很纳闷后来仔细看了下,java的反射机制;
2.这个可以通过java的反射机制来实现;
3.下面是一个例子:
package com.credream.refelect;
------------------------------------------------------------------------------------------------------------------
运行结果:
35
ArrayList, LinkedList, CopyOnWriteArrayList, Vector对比
1. 列表划分为线程安全和线程非安全两类
线程安全:Vector,CopyOnWriteArrayList,Collections.synchronizedList()
线程非安全:ArrayList,LinkedList
2. 底层存储
数组:ArrayList, Vecotr, CopyOnWriteArrayList
双向链表:LinkedList
通过三个添加元素的过程图,来看数据结构
ArrayList,Vector: 底层存储为数组
LinkedList: 底层存储为双向链表
CopyArrayList:底层存储为数组
3. 使用场景和说明
ArrayList
-
底层为数组,适合随机访问
-
删除不会引起数组容量变小
-
动态插入可能涉及到数组长度重新分配
-
为避免频繁的数组扩容,可设置一个合适的初始容量
-
不适用于频繁的在数组中间进行插入删除的场景
LinkedList
-
底层为双向链表,适合频繁删除新增的场景
-
随机访问不友好,需要遍历
Vector
-
线程安全
-
所有的方法都加锁,导致性能较差
CopyOnWriteArrayList
-
线程安全
-
读方法不加锁;修改方法加锁,一次只能一个写线程访问
-
修改时,会拷贝一份内容出来,对拷贝的结果进行操作,最后覆盖之前的内容;每次修改都会先上锁,然后进行数组拷贝,所以性能较ArrayList低;读取无锁,所以读的性能比Vector高(没有竞争);默认初始容量为0
-
遍历和读取都是基于访问时刻列表中的数组进行的;在执行过程中,链表发生修改不会影响遍历和读取的结果(即此时访问的依然是原数组内容)
4. 特性
1. List是有序的
2. ArrayList默认容量为10;
3. LinkedList,CopyOnWriteArrayList默认容量为0
4. new ArrayList<>()内部的数组实际上引用的是一个空数组
5. 需要线程安全的场景,使用CopyOnWriteArrayList(并发读性能好)或Collections.synchronizedList(并发写性能好)来替代Vector
6. ArrayList扩容规则
-
增加原来空间大小的一半
-
如果依然塞不下,则扩充到正好填充满的情况
7. 排序
-
Collections.sort(list, new Comparator(){xxx})
-
若List中的元素,实现了Comparable接口后,可以直接调用Collections.sort(list);
ArrayList.toArray()中的Java泛型 - Java generics in ArrayList.toArray()
问题:
Say you have an arraylist defined as follows: 假设你有一个arraylist定义如下:
ArrayList<String> someData = new ArrayList<>();
Later on in your code, because of generics you can say this: 稍后在您的代码中,由于泛型,您可以这样说:
String someLine = someData.get(0);
And the compiler knows outright that it will be getting a string. 并且编译器完全知道它将获得一个字符串。 Yay generics! 是的仿制药! However, this will fail: 但是,这将失败:
String[] arrayOfData = someData.toArray();
toArray()
will always return an array of Objects, not of the generic that was defined. toArray()
将始终返回一个Object数组,而不是已定义的泛型数组。 Why does the get(x)
method know what it is returning, but toArray()
defaults to Objects? 为什么get(x)
方法知道它返回什么,但toArray()
默认为Objects?
解决方案:
参考: https://stackoom.com/en/question/2TZ3I关于java – 如何使用putStringArrayListExtra()传递ArrayList和java中如何传递一个数组参数的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?、ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象、ArrayList, LinkedList, CopyOnWriteArrayList, Vector对比、ArrayList.toArray()中的Java泛型 - Java generics in ArrayList.toArray()的相关知识,请在本站寻找。
本文标签: