java集合 - List集合

1、List集合框架

2、集合的定义

    集合就是一个保存数据的容器。在计算机中引入集合,是为了便于处理一组类似的数据。Java标准库自带的java.util包提供了集合相关的接口和实现类:Collection接口,它是除了Map接口外所有其他集合类的根接口。

3、List集合的特点

  1. List集合的特点:有序、允许重复。
  2. List的行为和数组几乎完全相同:List 内部按照放入元素的先后顺存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。
  3. List的实现类:ArrayList、LinkedList、Vector。
  4. ArrayList的内部数据结构是Object[]数组:初始化为一个空数组{ },第一次添加元素时,该数组扩容为10,数组容量不足时,该数组的容量扩容为原容量的1.5倍。扩容方法:grow()。

 4、ArrayList的主要方法

  • 方法1:add(E e)  作用:添加新元素至集合的尾部
  • 方法2:add(int index,E e) 作用:添加新元素至集合的指定位置
  • 方法3:addAll(Collection c)  作用:添加另一个集合中所有的元素至当前集合的尾部
  • 方法4:addAll(int index,Collection c)  作用:添加另一个集合中所有的元素至当前集合指定位置
package com.ret.demo2;

import java.util.ArrayList;

public class Demo_02 {
	public static void main(String[] args) {
		// 创建集合对象
		ArrayList<String> list = new ArrayList<String>();

		// 操作1:添加新元素
		// add(E e)方法:添加新元素至集合尾部
		list.add("小乔");
		list.add("曹操");
		list.add("刘备");
		list.add("后羿");
		System.out.println(list);

		// add(int index,E e)方法:添加新元素至集合的指定位置
		list.add(1, "李白");
		System.out.println(list);

		// addAll(Collection c)方法
		// addAll(int index, Collection c)方法
		// 添加另外一个集合中所有的元素至当前集合
		ArrayList<String> subList = new ArrayList<String>();
		subList.add("猪八戒");
		subList.add("猪八戒");
		subList.add("白骨精");

		// 将subList中所有元素添加至list集合的尾部
		// list.addAll(subList);
		list.addAll(0, 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)  作用:按照下标,修改对应元素。
package com.ret.demo2;

import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

public class Demo_03 {
	public static void main(String[] args) {
		// 创建临时的List集合
		List<String> boyList = Arrays.asList("yk", "qtz", "cby", "cph", "zrz", "dcq", "ywq");

		// 全部添加至ArrayList集合中
		ArrayList<String> list = new ArrayList<String>();
		list.addAll(boyList);

		// 操作2:获取元素(按照下标位置,获取元素)
		// get(int index)
		String first = list.get(0);
		String last = list.get(list.size() - 1);
		System.out.println("首元素:" + first);
		System.out.println("尾元素:" + last);
		System.out.println(list);

		// 操作3:删除元素(按照下标或值,进行删除)
		// remove(int index); 按照下标删除
		// remove(Object value) 按照值删除
		System.out.println("删除前:" + list);

		// list.remove(1); //按照下标删除
		list.remove("范亚丽"); // 按照值删除

		System.out.println("删除后:" + list);

		// 操作4:查找元素
		// indexOf(Object o)
		int index1 = list.indexOf("张文英");
		System.out.println("查找一个不存在的元素时:" + index1);

		int index2 = list.indexOf("杨文琦");
		System.out.println("查找一个已经存在的元素时:" + index2);

		// 操作5:修改元素
		// set(int index,E e) : 按照下标位置修改
		System.out.println("修改前:"+list);
		list.set(1,"尊");
		System.out.println("修改后:"+list);
		
		
	}
}
  • 方法9:list.clear()   作用:清空集合内的所有元素
  • 方法10:isContains(E e)   作用:查看元素是否存在
  • 方法11:subList(int index,int index)  作用:截取子集合
  • 方法12:toArray()  作用:将集合转换成数组
  • 方法13:toArray(T[ ] a)  作用:将集合转换成数组
package com.ret.demo2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Demo_04 {
	public static void main(String[] args) {
		List<String> boyList = Arrays.asList("yk", "qtz", "cby", "cph", "zrz", "dcq", "ywq");

		// 全部添加至ArrayList集合中
		ArrayList<String> list = new ArrayList<String>();
		list.addAll(boyList);
		System.out.println(list);

		// 清空
		// list.clear();

		// 查看元素是否存在
		// boolean isContains = list.contains("yq");
		// System.out.println(isCotains);

		// 截取子集合
		List<String> subs = list.subList(0, 3); // Object数组
		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));

	}
}

5、通过创建ArrayList集合

1、通过无参构造方法创建ArrayList集合

// 通过【无参构造方法】创建ArrayList集合
    	// 数组默认被初始化成一个空数组
    	ArrayList<Integer> list1 = new ArrayList<Integer>();
    	
    	// 添加到11个元素时,容量不足,再次将数组扩容,按照原容量的1.5倍

2、通过有参构造方法创建ArrayList集合

// 通过【有参构造方法】创建ArrayList集合
    	// 根据预估数据元素的规模数量,初始化elementData数组
    	// 减少扩容的次数频率
    	ArrayList<Integer> list2 = new ArrayList<Integer>(200);

6、数组的遍历

遍历方法1:冒泡排序

public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.addAll(Arrays.asList("E","D","K","M","N","A"));
		
		//方式1:冒泡排序
		for(int i = 0;i<list.size()-1;i++) {
			for(int k = 0;k<list.size()-1-i;k++) {
				if(list.get(k).compareTo(list.get(k+1))>0) {
					String temp = list.get(k);
					list.set(k, list.get(k+1));
					list.set(k+1, temp);
				}
			}
		}
		
	}

遍历方法2:使用sort()方法

public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.addAll(Arrays.asList("E","D","K","M","N","A"));
		
		//方式2:使用sort()方法
		list = new ArrayList<String>();
		list.addAll(Arrays.asList("E","D","K","M","N","A"));
		list.sort(new Comparator<String>() {
 
			@Override
			public int compare(String o1, String o2) {
				
				return o1.compareTo(o2);
			}
			
		});
		System.out.println(list);
	}

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值