集合就是一个保存数据的容器。在计算机中引入集合,是为了便于处理一组类似的数据。Java标准库自带的java.util包提供了集合相关的接口和实现类:Collection接口,它是除了Map接口外所有其他集合类的根接口。
Java的Java.uitl包主要提供以下三种类型的集合:
- List:一种有序表的集合;
- Set:一种保证没有重复元素的集合
- Map:一种通过键值对查找的映射表集合。
Java集合的设计有几个特点:首先实现了接口和实现类相分离,比如:有序表的接口是List,具体的实现类有ArrayList、LinkedLis、Vectort;其次支持泛型,我们可以限制在一个集合中只能放入同一种数据类型的元素。
List集合的特点:有序、允许重复。
List的行为和数组几乎完全相同:List 内部按照放入元素的先后顺存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。
List的实现类:ArrayList、LinkedList、Vector。
特点:
内部源码为:
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
int newCapacity = oldCapacity + (oldCapacity >> 1);
方法1:add(E e) 作用:添加新元素至集合的尾部
方法2:add(int index,E e) 作用:添加新元素至集合的指定位置
方法3:addAll(Collection c) 作用:添加另一个集合中所有的元素至当前集合的尾部
方法4:addAll(int index,Collection c) 作用:添加另一个集合中所有的元素至当前集合指定位置
public static void main(String[] args) {
//创建集合对象
ArrayList list = new ArrayList();
//操作1:添加新元素
//add(E e)方法:添加新元素至集合的尾部
list.add("小乔");
list.add("曹操");
list.add("刘备");
list.add("后裔");
System.out.println(list);
//add(int index,E e)方法:添加新元素至集合的指定位置
list.add(0, "李白");
System.out.println(list);
//addAll(Collection c)方法
//addAll(int index,Collection c)方法
//添加另一个集合中所有的元素至当前集合
ArrayList subList = new ArrayList();
subList.add("孙悟空");
subList.add("猪八戒");
subList.add("白骨精");
//将subList中的所有元素添加至list集合的尾部
// list.addAll(subList);
list.addAll(1,subList);
System.out.println(list);
}
输出:
[小乔, 曹操, 刘备, 后裔]
[李白, 小乔, 曹操, 刘备, 后裔]
[李白, 孙悟空, 猪八戒, 白骨精, 小乔, 曹操, 刘备, 后裔]
方法5:get(int index) 作用:获取元素(按照下标位置,获取元素)
方法6:remove(int index) 作用:按照下标删除元素
remove(Object value) 作用:按照值删除
方法7:indexOf(Object o) 作用:查找元素
方法8:set(int index,E e) 作用:按照下标,修改对应元素。
//创建临时的List集合
List boyList = Arrays.asList("YK","QTZ","CBY","ZRZ","YWQ");
//全部添加至ArrayList集合中
ArrayList list = new ArrayList();
list.addAll(boyList);
System.out.println(list);
//操作2:获取元素(按照下标位置,获取元素)
//get(int index)
String first = list.get(0);
String last = list.get(list.size()-1);
System.out.println("首元素:"+first);
System.out.println("为元素:"+last);
//操作3:删除元素(按照下标或值,进行删除)
//remove(int index)按照下标删除
//remove(Object value) 按照值删除
System.out.println("删除前:"+list);
//list.remove(1); //按照下标删除
list.remove("YWQ"); //按照值删除
System.out.println("删除后:"+list);
//操作4:查找元素
//indexOf(Object o)
int index1 = list.indexOf("ZWY");
System.out.println("查找一个不存在的元素:"+index1);
int index2 = list.indexOf("YK");
System.out.println("查找一个已存在的元素:"+index2);
//操作5:修改元素
//set(int index,E e);
System.out.println("修改前:"+list);
list.set(1, "QQQ");
System.out.println("修改后:"+list);
输出:
[YK, QTZ, CBY, ZRZ, YWQ]
首元素:YK
为元素:YWQ
删除前:[YK, QTZ, CBY, ZRZ, YWQ]
删除后:[YK, QTZ, CBY, ZRZ]
查找一个不存在的元素:-1
查找一个已存在的元素:0
修改前:[YK, QTZ, CBY, ZRZ]
修改后:[YK, QQQ, CBY, ZRZ]
方法9:list.clear() 作用:清空集合内的所有元素
方法10:isContains(E e) 作用:查看元素是否存在
方法11:subList(int index,int index) 作用:截取子集合
方法12:toArray() 作用:将集合转换成数组
方法13:toArray(T[ ] a) 作用:将集合转换成数组
public static void main(String[] args) {
List boyList = Arrays.asList("YK","QTZ","CBY","ZRZ","YWQ");
//全部添加至ArrayList集合中
ArrayList list = new ArrayList();
list.addAll(boyList);
System.out.println(list);
//查看元素是否存在
boolean isContains = list.contains("yangQi");
System.out.println(isContains);
//截取子集合
List subs = list.subList(0, 3);
System.out.println(subs);
//转换成数组
Object[] array1 = list.toArray();//Object数组
String[] array2 = list.toArray(new String[list.size()]); //String数组
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
//
//清空
list.clear();
System.out.println(list);
}
输出:
[YK, QTZ, CBY, ZRZ, YWQ]
false
[YK, QTZ, CBY]
[YK, QTZ, CBY, ZRZ, YWQ]
[YK, QTZ, CBY, ZRZ, YWQ]
[]
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.addAll(Arrays.asList("E","D","K","M","N","A"));
//方式1:冒泡排序
for(int i = 0;i0) {
String temp = list.get(k);
list.set(k, list.get(k+1));
list.set(k+1, temp);
}
}
}
}
输出:
[A, D, E, K, M, N]
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.addAll(Arrays.asList("E","D","K","M","N","A"));
//方式2:使用sort()方法
list = new ArrayList();
list.addAll(Arrays.asList("E","D","K","M","N","A"));
list.sort(new Comparator() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
System.out.println(list);
}
输出:
[A, D, E, K, M, N]
//通过[无参构造方法]创建ArrayList集合
//数组默认被初始化成一个空数组
ArrayList list1 = new ArrayList();
list1.add(5178);//添加第1个元素时,将数组扩容为10
list1.add(1852);//添加第2个元素
list1.add(1555);//添加。。。个元素
list1.add(9527);//添加第10个元素
//添加第11个元素时,容量不足,再次将数组扩容,按照原容量的1.5倍
list1.add(1024);
ArrayList list2 = new ArrayList(200);
//创建集合时,传入另外一-个Collection集合, 并H.按照该集合的元素进行初始化
ArrayList list3 = new ArrayList(Arrays.asList(1,2,3));
下一篇:LinkedList