我是靠谱客的博主 丰富鸭子,这篇文章主要介绍set、list集合的遍历、list集合的常用方法,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
String[] arr=new String[2]; arr[0]="aa"; arr[1]="bb"; arr[3]="cc"; for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }

上面一段代码会出现数组下标越界的异常,更何况我们大部分情况下都是从前端接收数据,对于数据量更不可控
集合解决了Java中数组不能动态扩充的特性
collection与list和set还有其他集合的关系图**
collection(收集)下有两个接口list、set
collection存储的是一组不唯一、无序的对象
list存储的是一组不唯一有序(插入顺序)的对象
set存储一组唯一,无序的对象

List list=new List();这样是被new不出的,因为List是接口,接口是不能被实例化的
List list=new ArrayList();这样就可以,因为ArrayList是List 的实现类
List list=new LinkedList();这样也可以,因为LinkedList也是List的实现类
ArrayList:遍历元素和随机访问元素的效率比较高;
LinkedList:插入、删除元素的效率比较个;
ArrayList和LinkedList都有add添加元素的方法
List接口常用方法
1 boolean add(Object o)

在列表额末尾顺序添加元素,起始索引位置从0开始
1 for循环遍历List

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { List list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } } }

在这里插入图片描述
2 第二种for循环遍历,语法懂通不过,因为list.add添加元素的时候并不知道添加的是什么类型,所以就用到了泛型
在这里插入图片描述
3 List指定泛型添加元素,遍历List,List list=new ArrayList();指定泛型为String类型,打印直接打印变量s就好
语法结构:for(引用类型 变量:引用实例){}

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { List<String> list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); for(String s:list){ System.out.println(s); } } }

4 引用类型循环(List集合)
Person 是自定义类型,Person类的两个实例添加的是相同元素,打印出全部

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person=new Person(); person.setName("aa"); person.setAge(10); Person person1=new Person(); person1.setName("aa"); person1.setAge(10); List<Person> list=new ArrayList<>(); list.add(person); list.add(person1); for(Person s:list){ System.out.println(s.getName()+s.getAge()); } } }

在这里插入图片描述

5 set元素不能重复
Person 是自定义类型,Person类的两个实例添加的是相同元素,只打印出一组数据,重复的被自动过滤

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person=new Person(); person.setName("aa"); person.setAge(10); Person person1=new Person(); person1.setName("aa"); person1.setAge(10); Set<Person> set=new HashSet<>(); set.add(person); set.add(person1); for(Person s:set){ System.out.println(s.getName()+s.getAge()); } } }

在这里插入图片描述
6 set用迭代器遍历 Iterator
Person 是自定义类型,Person类的两个实例添加的是相同元素,只打印出一组数据,重复的被自动过滤

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person=new Person(); person.setName("aa"); person.setAge(10); Person person1=new Person(); person1.setName("aa"); person1.setAge(10); Set set=new HashSet(); set.add(person); set.add(person1); Iterator iterator=set.iterator(); /** *用while循环,括号里用条件表达式, *条件表达式为true时,才遍历,否则不进入循环 */ while (iterator.hasNext()){ /** *等号右边要加一个强制类型转换 * 强制类型转换的前提:类型一致,否则抛异常 * String s =(String) iterator.next(); * 写成上面那句也是不报错的,但是运行后会报错 * 因为类型不匹配,因为迭代器里的next方法返回的 * 是Object类型的引用 */ Person s =(Person) iterator.next(); System.out.println(s.getName()+s.getAge()); } } }

在这里插入图片描述
JDK1.8之后增加了lambda表达式
List的3种遍历方法
1 普通for循环在list循环遍历的第一个就写了
1 forEach遍历普通类型

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
public class FirstClass { @Test public void test() { List<String> list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.forEach(s->System.out.println(s)); } }

2 forEach遍历自定义(引用)类型,forEach里比普通类型加了大括号

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person = new Person(); person.setName("aa"); person.setAge(10); Person person1 = new Person(); person1.setName("aa"); person1.setAge(10); List<Person> list=new ArrayList(); list.add(person); list.add(person1); list.forEach(p -> {System.out.println(p.getName()+p.getAge());}); } }

set也可以用forEach遍历与list相同(普通类型、自定义类型:传泛型)

List集合的其他方法
1 void add(int Index,Object o)把第index个以及第index个以后的元素都往后移一位,再把obj放到index的位置;这个过程需要考虑index的合理性以及是否会溢出等问题

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
public class FirstClass { @Test public void test() { List<String> list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.add(0,"xx" ); list.forEach(s->System.out.println(s)); } }

在这里插入图片描述
2 Int size()返回列表中的元素个数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
public class FirstClass { @Test public void test() { List<String> list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.add("ee"); System.out.println(list.size()); } }

在这里插入图片描述
3 Object get(int Index)返回指定索引位置处的元素,取出的是Object类型,使用前需要进行强制类型转换,不过下面这个例子没强制转换也OK

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person = new Person(); person.setName("aa"); person.setAge(10); Person person1 = new Person(); person1.setName("bb"); person1.setAge(11); Person person2 = new Person(); person2.setName("cc"); person2.setAge(12); List<Person> list=new ArrayList(); list.add(person); list.add(person1); list.add(person2); Person p=list.get(2); System.out.println(p); } }

在这里插入图片描述
4 boolean contains(Object o)判断列表中是否存在指定元素 contains(包含)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person = new Person(); person.setName("aa"); person.setAge(10); Person person1 = new Person(); person1.setName("bb"); person1.setAge(11); Person person2 = new Person(); person2.setName("cc"); person2.setAge(12); List<Person> list=new ArrayList(); list.add(person); list.add(person1); list.add(person2); boolean s=list.contains(person); System.out.println(s); } }

在这里插入图片描述
5 boolean remove(Object o)从列表中删除指定元素

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person = new Person(); person.setName("aa"); person.setAge(10); Person person1 = new Person(); person1.setName("bb"); person1.setAge(11); Person person2 = new Person(); person2.setName("cc"); person2.setAge(12); List<Person> list=new ArrayList(); list.add(person); list.add(person1); list.add(person2); list.remove(person); list.forEach(s->{System.out.println(s);}); } }

在这里插入图片描述
6 boolean remove(int Index)从列表中删除指定位置元素,起始索引位置从0开始

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import lombok.Data; @Data public class Person { private int age; private String name; } import org.junit.Test; import java.util.ArrayList; import java.util.List; public class FirstClass { @Test public void test() { Person person = new Person(); person.setName("aa"); person.setAge(10); Person person1 = new Person(); person1.setName("bb"); person1.setAge(11); Person person2 = new Person(); person2.setName("cc"); person2.setAge(12); List<Person> list=new ArrayList(); list.add(person); list.add(person1); list.add(person2); list.remove(2); list.forEach(s->{System.out.println(s);}); } }

在这里插入图片描述

最后

以上就是丰富鸭子最近收集整理的关于set、list集合的遍历、list集合的常用方法的全部内容,更多相关set、list集合内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(98)

评论列表共有 0 条评论

立即
投稿
返回
顶部