Java中List和ArrayList的区别
List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。它继承 Collection。
List有两个重要的实现类:ArrayList 和 LinkedList
ArrayList:绝宽带我们可以将其看作是能够自动增长容量的数组。
利用ArrayList的toArray()返回一个数组。
Arrays.asList()返回一个列表。
1.ArrayList底层采用数组实现,当使用不带参巧肢数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组
2.如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
3.对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。并芦
4.集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中。
5.集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)
java怎么循环遍历ArrayList
除了用for循环也可以用迭代誉或器
ArrayListString al=new ArrayListString();
for(int i=0;i10;i++){
al.add(String.valueOf(i));
}
Iterator败旦String庆枯伍 it=al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Java中ArrayList的构造方法说明
Java中ArrayList的构造方法
public ArrayList(Collection? extends E c)
API的意思是“构造一掘神差个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
参数:判皮 c 其元素将瞎迹放置在此列表中的 collection ”
比如:
ArrayListString list = new ArrayListString();
list.add(“hello”);
String str = list.get(0);//这里不需要强制类型转换了
这个list里面保存的全数据全都是String类的对象,同时,在取出数据的时候,无需强制类型转换。
java arraylist用法
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class TestMain {
public static void main(String[] args){
List list1 = new ArrayList();
list1.add(“a”);
list1.add(“1”);
list1.add(“b”);
list1.add(“2”);
list1.add(“让念c”);
list1.add(“3”);
list1.add(“d”);
//list1.add(“4”);
Map map1 = genMap(list1);
Iterator it = map1.keySet().iterator();
while(it.hasNext()){
String key = it.next().toString();
String value = map1.get(key).toString();
System.out.println(“key :” + key + ” ; value = ” + value);
}
}
public static Map genMap(List list1){
if(list1.size() % 2 == 1){
throw new IllegalArgumentException(“错误:list长度为奇数。”);
}
Map map1 = new HashMap();
for(int i=0;ilist1.size();){
map1.put(list1.get(i), list1.get(i+1));
i += 2;
}
return map1;
}
}
注:
代码中注释掉的这一句:
//list1.add(“4”);
注释掉,则list1的元游猜素个神滑型数为单数,
打开,则list1的元素个数为双数。
请分别测试。
java中使用ArrayList如何修改里面的内容.
////////////////that’s mine
import java.util.*;
public class StudentSorter{
public static void main(String [] as){
Student a = new Student(“a”, 80);
Student b = new Student(“b”, 90);
Student c = new Student(“c”, 70);
ListStudent list = new ArrayListStudent();
list.add(a);
list.add(b);
list.add(c);
System.out.println(“未修改前:”);
for(Student s: list){
System.out.println(s);
}
a.setMark(100);
list.set(0, a);
System.out.println(“已修改后:”);
for(Student s: list){
System.out.println(s);
}
}
}
class Student implements Comparable{
private String name;
private int mark;
public Student(){}
public Student(String n, int m) {
name = n;
mark = m;
}
public void setMark(int m){
mark = m;
}
public int getMark(){
return mark;
}
public int compareTo(Object o) {
if(o instanceof Student) {
Student s = (Student)o;
return s.getMark() – this.getMark();
} else {
return -1;
}
}
public String toString(){
return name + “: ” + mark;
}
}
做法就是上面的。
扩展资料:
java中ArrayList用法详解
基本的ArrayList,长于随机访问元素,但是在List中间插入和移除元素时较慢,并且ArrayList的操作不是线程安全的。
一般在单线程中才使用ArrayList,而在多线程中一般使用Vector或者CopyOnWriteArrayList。
1、使用ArrayList 简单的例子:
ArrayListInteger a=new ArrayListInteger();
for(int i=0; in; i++){
a.add(sc.nextInt()); //为数组渗橡斗增加int型数
}
a.remove(0);//删除第一个元素;
m=2;
a.add(m); //在数组末尾添加
a.add(4,2);// 在指定位置添加元素,在第5个位置添加2
a.remove(2); // 删除指定位置上的元素
a.remove((Object)3); // 删除指定元素
a.clear(); // 清空ArrayList
System.out.println(“ArrayList contains 5 is: ” + a.contains(5));// 判断arrayList是否包含5
System.out.println(“ArrayList is empty: ” + arrayList.isEmpty()); // 判断ArrayList是否为空
2、toArray用法
有时候,当我们调用ArrayList中的 toArray(),可能遇到过抛出java.lang.ClassCastException异常的情况,
这是由于toArray() 返回的是 Object[] 数组,将 Object[] 转换为其它类型(如,将Object[]转换为的Integer[])则会抛出java.lang.ClassCastException异常,因为Java不支持向下转型。
所以一般更常用的是使用另外一种方法进行使用:
T T[] toArray(T[] a)
调用toArray(T[] a)返回T[]可通以下方式进行实如悄现:
// toArray用法
// 第丛磨一种方式(最常用)
Integer[] integer = arrayList.toArray(new Integer[0]);
// 第二种方式(容易理解)
Integer[] integer1 = new Integer[arrayList.size()];
arrayList.toArray(integer1);
// 抛出异常,java不支持向下转型
//Integer[] integer2 = new Integer[arrayList.size()];
//integer2 = arrayList.toArray();
ArrayListInteger a = new ArrayListInteger();
实例:
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo {
public static void main(String[] srgs){
ArrayListInteger arrayList = new ArrayListInteger();
System.out.printf(“Before add:arrayList.size() = %d\n”,arrayList.size());
arrayList.add(1);
arrayList.add(3);
arrayList.add(5);
arrayList.add(7);
arrayList.add(9);
System.out.printf(“After add:arrayList.size() = %d\n”,arrayList.size());
System.out.println(“Printing elements of arrayList”);
// 三种遍历方式打印元素
// 第一种:通过迭代器遍历
System.out.print(“通过迭代器遍历:”);
IteratorInteger it = arrayList.iterator();
while(it.hasNext()){
System.out.print(it.next() + ” “);
}
System.out.println();
// 第二种:通过索引值遍历
System.out.print(“通过索引值遍历:”);
for(int i = 0; i arrayList.size(); i++){
System.out.print(arrayList.get(i) + ” “);
}
System.out.println();
// 第三种:for循环遍历
System.out.print(“for循环遍历:”);
for(Integer number : arrayList){
System.out.print(number + ” “);
}
// toArray用法
// 第一种方式(最常用)
Integer[] integer = arrayList.toArray(new Integer[0]);
// 第二种方式(容易理解)
Integer[] integer1 = new Integer[arrayList.size()];
arrayList.toArray(integer1);
// 抛出异常,java不支持向下转型
//Integer[] integer2 = new Integer[arrayList.size()];
//integer2 = arrayList.toArray();
System.out.println();
// 在指定位置添加元素
arrayList.add(2,2);
// 删除指定位置上的元素
arrayList.remove(2);
// 删除指定元素
arrayList.remove((Object)3);
// 判断arrayList是否包含5
System.out.println(“ArrayList contains 5 is: ” + arrayList.contains(5));
// 清空ArrayList
arrayList.clear();
// 判断ArrayList是否为空
System.out.println(“ArrayList is empty: ” + arrayList.isEmpty());
}
}
/**
Before add:arrayList.size() = 0
After add:arrayList.size() = 5
Printing elements of arrayList
通过迭代器遍历:1 3 5 7 9
通过索引值遍历:1 3 5 7 9
for循环遍历:1 3 5 7 9
ArrayList contains 5 is: true
ArrayList is empty: true
*/