ArrayList用法

ArrayList用法

ArrayList用法:
ArrayList是接口List的实现类,所以推荐以List接口来使用。

1、创建ArrayList的List接口
例:
List books = new ArrayList();
Java支持泛形后,创建的同时可以指定元素的类型。
例:
Class Book {
......
}
List<Book> books = new ArrayList<Book>();
为避免容器自动扩容的次数而影响性能,可以指定创建时的元素大小。
例:
// 创建可容纳100个Book对象的ArrayList,超过100个将自动扩容
List<Book> books = new ArrayList<Book>(100);

2、添加元素
添加在末尾
例:
Book book1 = new Book();
Book book2 = new Book();
Book book3 = new Book();
books.add(book1);
books.add(book2);
books.add(book3);
添加在指定索引处
例:
// 虽然加book1后直接加book3了,但book2是被加在索引1的地方
// 所以效果同上,是book1、book2、book3的顺序
books.add(book1);
books.add(book3);
books.add(1, book2);

3、 获取ArrayList中元素的个数
例:
int count = books.size();

4、读取元素
利用普通的for循环:
例:
for (int i = 0; i < books.size(); i++ {
Book newBook = books.get(i);
// 不带泛形的注意要转型
Book book = (Book) books.get(i);
System.out.println(book.getName());
}
利用for循环的新特性:
例:
for (Book book : books) {
// 用book就能访问了
System.out.println(book.getName());
}
利用枚举:
例:
Iterator<Book> iter = books.iterator();
while (iter.hasNext()) {
Book book = iter.next();
System.out.println(book.getName());
}

5、移除元素
移除指定索引处的元素
例:
books.remove(0); // 移除book1
books.remove(1); // 移除book2
books.remove(2); // 移除book3
移除指定对象的所在元素
例:
Book delBook = books.get(1);
books.remove(delBook); // 移除book2
移除所有元素
例:
books.clear();

6、判断ArrayList是否为空(没有元素)
原方法:
if (books.isEmpty()) {
}
直接判断大小:
if (books.size() == 0) {
}

7、判断ArrayList中是否已经存在了某对象
例:
// 判断是否已经存在book2对象
if (books.contains(book2)) { // 已经存在
}

8、根据对象反查询它的索引位置
从前住后查询,反回第一个符合条件的位置
例:
list.indexOf(book2); // 查询book2对象的索引位置
从后住前查询,反回第一个符合条件的位置
例:
list.lastIndexOf(book2); // 查询book2对象的索引位置

以上这些掌握后,基本就没问题了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-29

    ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。

    List 接口的大小可变数组的实现,位于API文档的java.util.ArrayList<E>。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

    size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。

    每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。

本回答被网友采纳
第2个回答  2009-02-16
简单讲几个常用的用法,其它的用法最好还是查阅api
1。ArrayList实现List接口,
可以这样实例化:List list=new ArrayList();
2。list.add(obj);可以在list的最后插入一个实例,obj可以是任意类型的实例;
3。list.get(index);可以获得list中下标为index的元素,例如list.get(0);就是获得第一个,这样也可以遍历list,list.size()返回list的大小;
4。也可以用迭代器遍历:list.iterator();获得迭代器;
第3个回答  推荐于2016-03-20
存的时候
ArrayList al = new ArrayList();

User user = new User();
user.setname("张三");
user.setage(21);
user.setsex("男");

User user1 = new User();
user1.setname("李四");
user1.setage(31);
user1.setsex("男");

al.add(user);
al.add(user1);

取出来的时候可以用一个迭代器Iterator拿出来,OK,到此结束本回答被提问者采纳
第4个回答  2009-02-16
List list = Collections.synchronizedList(new ArrayList(...));
补充个同步的
相似回答