18.集合类-ArrayList和LinkedList
18.1 知识点
Java中各集合类之间的关系
Java中的集合类就类似C#中的List和Dictionary的存在,主要用于批量存储对象,并且可以动态添加,动态删除。
Collection(接口)
- Set(接口)
- HashSet
- TreeSet
- List(接口)
- ArrayList
- LinkedList
Map(接口)
- HashMap
- TreeMap
Collection接口中的方法
- add(E e): 添加元素
- remove(Object o): 移除元素
- clear(): 清空元素
- isEmpty(): 是否为空
- iterator(): 获取迭代器,可以用于遍历
- size(): 集合中元素个数
- contains(): 判断元素是否存在
- toArray(): 将容器中元素转为数组
List接口中的方法
- get(int index): 获取指定位置元素
- set(int index, Object obj): 修改集合中指定位置的元素
ArrayList和LinkedList类
两者方法上的使用完全一致,因为它们继承相同的接口。区别在于:
- ArrayList本质是数组,是顺序存储
- LinkedList本质是链表,是链式存储
常用方法
- 初始化
ArrayList<String> list = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
- 增
list.add("1");
list.add("2");
list.add("3");
list2.add(1);
list2.add(2);
list2.add(3);
- 删
list.remove("3");
if (list.isEmpty()) System.out.println("list容器为空1");
list.clear();
if (list.isEmpty()) System.out.println("list容器为空2");//list容器为空2
//list.remove(2);
//如果我们的容器当中存储的是int类型 在移除的时候 我们只能通过索引移除
list2.remove(1);
- 查
System.out.println(list2.get(0));//1
System.out.println(list2.get(1));//3
if (list2.contains(2)) System.out.println("存在2元素");//不会打印
- 改
list2.set(0, 99);
System.out.println(list2.get(0));//99
- 遍历
- for循环
for (int i = 0; i < list2.size(); ++i)
System.out.println(list2.get(i));
// 99
// 3
- foreach语句
for (Integer i : list2)
System.out.println(i);
// 99
// 3
- 迭代器
Iterator<Integer> it = list2.iterator();
while (it.hasNext()) System.out.println(it.next());
// 99
// 3
- 转数组
System.out.println("****************");
Integer[] ints = new Integer[2];
list2.toArray(ints);
for (Integer i : ints)
System.out.println(i);
// 99
// 3
总结
Java中的ArrayList和LinkedList类似于C#中的List和LinkedList,根据自己的实际情况选择使用即可。
18.2 知识点代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
public class Lesson18_集合类_ArrayList和LinkedList
{
public static void main(String[] args)
{
//知识点1:Java中各集合类之间的关系
//Java中的集合类就类似C#中的List和Dictionary的存在
//主要用于批量存储对象,并且可以动态添加,动态删除
// Collection(接口)
// __________|__________
// | |
// Set(接口) List(接口)
// ___|____ _____|_____
// | | | |
//HashSet TreeSet ArrayList LinkedList
// Map(接口)
// ________|_______
// | |
// HashMap TreeMap
//知识点2:Collection接口中的方法
//1.add(E e) 添加元素
//2.remove(Object o) 移除元素
//3.clear() 清空元素
//4.isEmpty() 是否为空
//5.iterator() 获取迭代器,可以用于遍历
//6.size() 集合中元素个数
//7.contains() 判断元素是否存在
//8.toArray() 将容器中元素转为数组
//知识点3:List接口中的方法
//1.get(int index) 获取指定位置元素
//2.set(int index, Object obj) 修改集合中指定位置的元素
//知识点4:ArrayList和LinkedList类
//两者方法上的使用完全一致,因为他们继承相同的接口
//区别:
//ArrayList本质是数组,是顺序存储
//LinkedList本质是链表,是链式存储
//LinkedList在插入删除时效率高于ArrayList
//ArrayList在访问集合中指定位置对象时效率高于LinkedList
//常用方法:
//1.初始化
//非常类似C#中的List
ArrayList<String> list = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
//2.增
list.add("1");
list.add("2");
list.add("3");
list2.add(1);
list2.add(2);
list2.add(3);
//3.删
list.remove("3");
if (list.isEmpty()) System.out.println("list容器为空1");
list.clear();
if (list.isEmpty()) System.out.println("list容器为空2");//list容器为空2
//list.remove(2);
//如果我们的容器当中存储的是int类型 在移除的时候 我们只能通过索引移除
list2.remove(1);
//4.查
System.out.println(list2.get(0));//1
System.out.println(list2.get(1));//3
if (list2.contains(2)) System.out.println("存在2元素");//不会打印
//5.改
list2.set(0, 99);
System.out.println(list2.get(0));//99
//6.遍历
//三种方式
//for循环
for (int i = 0; i < list2.size(); ++i)
System.out.println(list2.get(i));
// 99
// 3
//foreach语句
for (Integer i : list2)
System.out.println(i);
// 99
// 3
//迭代器
Iterator<Integer> it = list2.iterator();
while (it.hasNext()) System.out.println(it.next());
// 99
// 3
//7.转数组
//Object[] objs = list2.toArray();
System.out.println("****************");
Integer[] ints = new Integer[2];
list2.toArray(ints);
for (Integer i : ints)
System.out.println(i);
// 99
// 3
//总结
//Java中的ArrayList和LinkedList类似
//C#中的List和LinkedList
//根据自己的实际情况选择使用即可
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com