java中list集合_Java中List集合

Java中List集合

List集合的特点:存储的元素是有序/可重复的。

List集合为每个元素指定了一个索引值, 主要增加了针对索引值的操作。

void

add(int index, E element) 在当前集合的index位置插入元素element

boolean

addAll(int index, Collection extends E> c) 把集合c中的所有元素插到当前集合的index位置

E

get(int index) 返回index位置的元素

int

indexOf(Object o) 返回元素o在集合中第一次出现的位置

int

lastIndexOf(Object o) 返回元素o在集合中最后一次出现的位置

ListIterator

listIterator() 返回List迭代器

E

remove(int index)删除指定位置的元素

E

set(int index, E element) 修改指定位置的元素

default void

sort(Comparator super E> c) 排序

List

subList(int fromIndex, int toIndex) 返回[frominde, toIndex)范围内的子列表

package com.wkcto.chapter05.list;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/**

* 演示List的基本操作

* @author 蛙课网

*

*/

public class Test01 {

public static void main(String[] args) {

//1)创建List集合, List接口引用需要赋值实现类对象

List list = new ArrayList<>();

//2)添加元素

list.add("gg");

list.add("jj");

list.add("dd");

list.add("mm");

list.add("jj");

//3)直接打印, List存储元素的顺序就是添加的顺序, 可以存储重复的数据

System.out.println( list ); //[gg, jj, dd, mm, jj]

//4) 判断

System.out.println( list.size() );

System.out.println( list.isEmpty());

System.out.println( list.contains("jj"));

//5) 删除

list.remove("gg"); //删除第一个匹配的元素

System.out.println( list ); //[jj, dd, mm, jj]

//6) 遍历

for (String string : list) {

System.out.print( string + "\t");

}

System.out.println( );

//7)迭代遍历

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

String string = (String) iterator.next();

System.out.print(string + "\t");

}

System.out.println( );

//8)迭代删除

iterator = list.iterator(); //重新获得迭代器对象

while (iterator.hasNext()) {

String string = (String) iterator.next();

if ("jj".equals(string)) {

iterator.remove();

}

}

System.out.println( list );

}

}

package com.wkcto.chapter05.list;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

/**

* 演示List集合新增的操作

* @author 蛙课网

*

*/

public class Test02 {

public static void main(String[] args) {

// 1)创建List集合,

List list = new ArrayList<>();

// 2)添加元素

list.add("gg");

list.add("jj");

list.add("dd");

list.add("mm");

list.add("jj");

// 3)直接打印,

System.out.println(list);//[gg, jj, dd, mm, jj]

//4) 在指定索引值的位置添加

list.add(0, "MM");

list.add(list.size(), "DD");

System.out.println(list);//[MM, gg, jj, dd, mm, jj, DD]

//遇到索引值的位置,需要注意索引值不能越界

//list.add(20 , "xxx"); //java.lang.IndexOutOfBoundsException

//5)删除指定位置的元素

list.remove(0);

System.out.println( list ); //[gg, jj, dd, mm, jj, DD]

list.remove(list.size()-1);

System.out.println( list ); //[gg, jj, dd, mm, jj]

//6)返回指定位置的元素

System.out.println( list.get(0));

System.out.println( list.get(list.size()-1));

//7)修改指定位置的元素

list.set(0, "JJ");

System.out.println( list ); //[JJ, jj, dd, mm, jj]

//8)返回指定范围的子列表, 注意subList并没有生成新的List列表 ,而是返回原有List列表的一个视图

List sublist = list.subList(0, 3);

System.out.println( sublist ); //[JJ, jj, dd]

//修改sublist子列表

sublist.add("DD");

sublist.set(0, "jj");

System.out.println( sublist ); //[jj, jj, dd, DD]

//对subList进行的修改实际上就是对list进行修改

System.out.println( list ); //[jj, jj, dd, DD, mm, jj]

//9) 返回指定元素在列表中第一次出现的位置

System.out.println( list.indexOf("jj"));

System.out.println( list.lastIndexOf("jj"));

//10) ListIterator迭代

// ListIterator继承了Iterator

ListIterator listIterator = list.listIterator();

while (listIterator.hasNext()) {

String string = (String) listIterator.next();

System.out.print( string + "\t");

}

System.out.println();

//经过上个while循环后,listIterator游标指向最后,ListIterator还可以向前迭代

while( listIterator.hasPrevious() ){

String str = listIterator.previous();

System.out.print( str + "\t");

}

System.out.println();

//ListIterator不仅可以删除元素,还可以修改/添加元素

while (listIterator.hasNext()) {

String string = (String) listIterator.next();

if (string.equals("mm")) {

listIterator.remove(); //删除

}else if ( "jj".equals(string)) {

listIterator.add("Dd");

}else if ("dd".equals(string)) {

listIterator.set("DD");

}

}

System.out.println( list ); //[jj,Dd , jj, Dd, DD, DD, jj, Dd]

}

}

package com.wkcto.chapter05.list;

import java.util.ArrayList;

import java.util.List;

/**

* List集合存储自定义类型数据

* 注意List集合的remove(Object)/contains(Object)方法会调用对象的equals()方法, 如果是自定义需要重写equals()方法

* @author 蛙课网

*

*/

public class Test03 {

public static void main(String[] args) {

//创建List集合,存储Person对象

List list = new ArrayList<>();

//添加元素

list.add(new Person("lisi", 18));

list.add(new Person("feifei", 28));

list.add(new Person("zhang", 33));

list.add(new Person("yong", 35));

System.out.println( list );

Person feifei = new Person("feifei", 28);

System.out.println( list.contains(feifei));

list.remove(feifei);

System.out.println( list );

}

}

package com.wkcto.chapter05.list;

import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

/**

* List集合排序

* sort(Comparator)

* @author 蛙课网

*

*/

public class Test04 {

public static void main(String[] args) {

//创建List集合,存储Person对象

List list = new ArrayList<>();

//添加元素

list.add(new Person("lisi", 18));

list.add(new Person("feifei", 28));

list.add(new Person("zhang", 33));

list.add(new Person("yong", 35));

//打印输出的顺序就是添加的顺序

System.out.println( list );

//[Person [name=lisi, age=18], Person [name=feifei, age=28], Person [name=zhang, age=33], Person [name=yong, age=35]]

//对List集合中的元素排序, 想要对List集合中的Person对象按照年龄降序排序

//调用方法时,传递Comparator的匿名内部类对象, 通过泛型指定比较对象的数据类型

list.sort(new Comparator() {

//在匿名内部类重写接口的抽象方法

@Override

public int compare(Person o1, Person o2) {

//在compare方法中指定比较规则 , 按年龄降序

return o2.age - o1.age; //如果o1的年龄大返回负数, o2年龄大返回正数

//return o1.age - o2.age; //如果o1的年龄大返回正数, o2年龄大返回负数

}

});

System.out.println( list );

//对List排序, 根据姓名升序

list.sort(new Comparator() {

@Override

public int compare(Person o1, Person o2) {

//return o1.name.compareTo(o2.name); //姓名升序

return o2.name.compareTo(o1.name); //姓名降序

}

});

System.out.println(list);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值