转:https://www.cnblogs.com/epeter/p/5648026.html
Java中对List集合的常用操作
目录:
- list中添加,获取,删除元素;
- list中是否包含某个元素;
- list中根据索引将元素数值改变(替换);
- list中查看(判断)元素的索引;
- 根据元素索引位置进行的判断;
- 利用list中索引位置重新生成一个新的list(截取集合);
- 对比两个list中的所有元素;
- 判断list是否为空;
- 返回Iterator集合对象;
- 将集合转换为字符串;
- 将集合转换为数组;
- 集合类型转换;
- 去重复;
备注:内容中代码具有关联性。
1.list中添加,获取,删除元素;
添加方法是:.add(e); 获取方法是:.get(index); 删除方法是:.remove(index); 按照索引删除; .remove(Object o); 按照元素内容删除;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
List<String> person= new ArrayList<>(); person.add( "jackie" ); //索引为0 //.add(e) person.add( "peter" ); //索引为1 person.add( "annie" ); //索引为2 person.add( "martin" ); //索引为3 person.add( "marry" ); //索引为4 person.remove( 3 ); //.remove(index) person.remove( "marry" ); //.remove(Object o) String per= "" ; per=person.get( 1 ); System.out.println(per); ////.get(index) for ( int i = 0 ; i < person.size(); i++) { System.out.println(person.get(i)); //.get(index) } |
2.list中是否包含某个元素;
方法:.contains(Object o); 返回true或者false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
List<String> fruits= new ArrayList<>(); fruits.add( "苹果" ); fruits.add( "香蕉" ); fruits.add( "桃子" ); //for循环遍历list for ( int i = 0 ; i < fruits.size(); i++) { System.out.println(fruits.get(i)); } String appleString= "苹果" ; //true or false System.out.println( "fruits中是否包含苹果:" +fruits.contains(appleString)); if (fruits.contains(appleString)) { System.out.println( "我喜欢吃苹果" ); } else { System.out.println( "我不开心" ); } |
3.list中根据索引将元素数值改变(替换);
注意 .set(index, element); 和 .add(index, element); 的不同;
1
2
3
4
5
6
7
8
9
10
11
12
|
String a= "白龙马" , b= "沙和尚" , c= "八戒" , d= "唐僧" , e= "悟空" ; List<String> people= new ArrayList<>(); people.add(a); people.add(b); people.add(c); people.set( 0 , d); //.set(index, element); //将d唐僧放到list中索引为0的位置,替换a白龙马 people.add( 1 , e); //.add(index, element); //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位 //增强for循环遍历list for (String str:people){ System.out.println(str); } |
4.list中查看(判断)元素的索引;
注意:.indexOf(); 和 lastIndexOf()的不同;
1
2
3
4
5
6
7
8
9
10
|
List<String> names= new ArrayList<>(); names.add( "刘备" ); //索引为0 names.add( "关羽" ); //索引为1 names.add( "张飞" ); //索引为2 names.add( "刘备" ); //索引为3 names.add( "张飞" ); //索引为4 System.out.println(names.indexOf( "刘备" )); System.out.println(names.lastIndexOf( "刘备" )); System.out.println(names.indexOf( "张飞" )); System.out.println(names.lastIndexOf( "张飞" )); |
5.根据元素索引位置进行的判断;
1
2
3
4
5
6
7
|
if (names.indexOf( "刘备" )== 0 ) { System.out.println( "刘备在这里" ); } else if (names.lastIndexOf( "刘备" )== 3 ) { System.out.println( "刘备在那里" ); } else { System.out.println( "刘备到底在哪里?" ); } |
6.利用list中索引位置重新生成一个新的list(截取集合);
方法: .subList(fromIndex, toIndex); .size() ; 该方法得到list中的元素数的和
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
List<String> phone= new ArrayList<>(); phone.add( "三星" ); //索引为0 phone.add( "苹果" ); //索引为1 phone.add( "锤子" ); //索引为2 phone.add( "华为" ); //索引为3 phone.add( "小米" ); //索引为4 //原list进行遍历 for (String pho:phone){ System.out.println(pho); } //生成新list phone=phone.subList( 1 , 4 ); //.subList(fromIndex, toIndex) //利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3 for ( int i = 0 ; i < phone.size(); i++) { // phone.size() 该方法得到list中的元素数的和 System.out.println( "新的list包含的元素是" +phone.get(i)); } |
7.对比两个list中的所有元素;
//两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象
1
2
3
4
5
6
7
8
9
10
11
|
//1.<br>if (person.equals(fruits)) { System.out.println( "两个list中的所有元素相同" ); } else { System.out.println( "两个list中的所有元素不一样" ); } //2. if (person.hashCode()==fruits.hashCode()) { System.out.println( "我们相同" ); } else { System.out.println( "我们不一样" ); } |
8.判断list是否为空;
//空则返回true,非空则返回false
1
2
3
4
5
|
if (person.isEmpty()) { System.out.println( "空的" ); } else { System.out.println( "不是空的" ); } |
9.返回Iterator集合对象;
1
|
System.out.println( "返回Iterator集合对象:" +person.iterator()); |
1+0.将集合转换为字符串;
1
2
3
|
String liString= "" ; liString=person.toString(); System.out.println( "将集合转换为字符串:" +liString); |
11.将集合转换为数组;
1
|
System.out.println( "将集合转换为数组:" +person.toArray()); |
12.集合类型转换;
1
2
3
4
5
6
7
8
9
10
|
//1.默认类型 List<Object> listsStrings= new ArrayList<>(); for ( int i = 0 ; i < person.size(); i++) { listsStrings.add(person.get(i)); } //2.指定类型 List<StringBuffer> lst= new ArrayList<>(); for (String string:person){ lst.add(StringBuffer(string)); } |
13.去重复;
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
|
List<String> lst1= new ArrayList<>(); lst1.add( "aa" ); lst1.add( "dd" ); lst1.add( "ss" ); lst1.add( "aa" ); lst1.add( "ss" ); //方法 1. for ( int i = 0 ; i <lst1.size()- 1 ; i++) { for ( int j = lst1.size()- 1 ; j >i; j--) { if (lst1.get(j).equals(lst1.get(i))) { lst1.remove(j); } } } System.out.println(lst1); //方法 2. List<String> lst2= new ArrayList<>(); for (String s:lst1) { if (Collections.frequency(lst2, s)< 1 ) { lst2.add(s); } } System.out.println(lst2); |