欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

02 深入了解java集合之List

程序员文章站 2022-04-15 14:10:04
...

List 

此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素

一 功能:增加、删除、获取、修改、迭代器

package it.Collection;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/*List集合不可重复
 * 特有功能:
 * 增加:  void add(int index,E element)
 * 删除 :  E remove(int index)
 * 获取:  E get(int index) 
 * 修改:  E set(int index,E element) 
 * 迭代器: ListIterator listIterator()
 */
public class ListDamo1 {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		//添加
		list.add(0, "诸葛亮");
		list.add(1, "司马懿");
		list.add(2, "周瑜");
		list.add(3, "曹操");
		list.add(4, "刘备");
		list.add(5, "孙权");
		list.add(4, "刘备1"); //在索引前添加元素
//		System.out.println(list);
		//删除 
//		System.out.println(list.remove(4));//返回那个被删除的元素
		//获取
		System.out.println(list.get(5));//获取指定索引的元素
		//修改
		System.out.println(list.set(0,"猪")); //返回set前对应索引的数据
		System.out.println(list);
		//迭代器
		ListIterator<String> i = list.listIterator();
		//正迭代
		while(i.hasNext()){
			String s= i.next();
			System.out.println(s);
		}
		System.out.println("-------------------------");
		//反迭代
		while(i.hasPrevious()){
		String s =	i.previous();
		System.out.println(s);
		}
	}
}

二 练习题:判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码:

package it.Collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*例题 :判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码:
 *      迭代器: ListIterator listIterator()//添加功能
 */

public class ListDamoTest02 {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		// 添加
		list.add(0, "诸葛亮");
		list.add(1, "司马懿");
		list.add(2, "周瑜");
		list.add(3, "曹操");
		list.add(4, "刘备");
		list.add(5, "孙权");

		// 迭代器
		ListIterator<String> i = list.listIterator();
		/*
		 * 由于迭代器是依赖于集合存在的,当集合发生改变后,迭代器再迭代就会发生并发修改异常。 解决方案: A:迭代器循环,迭代器修改。
		 * 在要迭代的后面添加元素。
		 */
		while (i.hasNext()) {
			String s = i.next();
			if ("曹操".equals(s)) {
				i.add("孙悟空");
			}
			System.out.println(s);
		}
		System.out.println(list);
		System.out.println("-------------------------");
		// B:集合循环,集合修改。元素添加在最后面
		for (int a = 0; a < list.size(); a++) {
			if ("曹操".equals(a)) {
				list.add("孙悟空");
			}
		}
		System.out.println(list);

	}
}

三  什么叫数据结构?

 就是数据的存储方式

四 常见的数据结构(栈、队列、数组、链表)

A  栈 :先进后出

02 深入了解java集合之List

B 队列:先进先出

02 深入了解java集合之List

C 数组 

02 深入了解java集合之List

D 链表

02 深入了解java集合之List

五 List的子类特点(面试题)
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。


相关标签: list