Java-集合(list接口)

集合

概述
Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。Java程序员在具体应用时,不必考虑数据结构和算法 实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率
为什么使用集合框架
如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象----可以使用Java集合框架
Java-集合(list接口)
Java集合框架包含的内容
Java-集合(list接口)
集合框架的接口
Java-集合(list接口)
List接口的实现类
Java-集合(list接口)
ArrayList 实现的长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
Java-集合(list接口)
List接口常用方法
Java-集合(list接口)
声明一个list集合,等式左边:接口 右边:实现类 多态
List list=new ArrayList<>() ;
接口定义的方法
追加一条数据
list.add(1);
list.add("a");
list.add(true);
访问某个数据
System.out.println(list.get(0));//1
System.out.println(list);//[1,a,true]
在指定下标位置插入元素,下标位置必须介于0到个数之间
list.add(1, "abc");
ArrayList中重写了toString方法
System.out.println(list.toString());//[1,abc,a,true]
size方法:获取list的个数
System.out.println("list的元素个数是"+list.size());
remove方法:有两个重载(int a)(object o)
1.通过传入具体的元素值来删除,返回删除结果
2.通过传入对应元素的下标来删除元素,返回被删除的元素内容,下标位置在0到最后一个元素下标之间
list.remove("abc");
要删除整数:list.remove((Integer)1)
要删除字符型:list.remove((Character)‘a’)
System.out.println("是否删除成功?"+list.remove("abc"));//返回true
System.out.println("删除的元素:"+list.remove(1));//返回a

System.out.println("list的元素个数是"+list.size());
判断是否存在某个元素值
System.out.println(list.contains(1));//返回true

LinkedList采用链表存储方式。
插入、删除元素时效率比较高
Java-集合(list接口)
LinkedList常用方法
Java-集合(list接口)
LinkedList方法
addAll 向集合当中添加一个集合
List list=new LinkedList<>();
List list2=new LinkedList<>();
Set set=new HashSet<>();
set.add(8);
list2.add(1);
list2.add(2);
list2.add(3);
list.add(0);
list.addAll(list2);
list.addAll(set);
System.out.println(list);//[0,1,2,3,8]
isEmpty()判断集合是否为空
判断一个集合是否为空
if(list!=null&&!list.isEmpty()){
}
clear清空数据,保留对象,重置list
list.clear();
System.out.println(list);// []
list=null;彻底删除,回收空间
indexOf返回对应元素第一次出现的下标
list.add(5);
System.out.println(list.indexOf(5));//0
lastIndexOf返回对应元素最后一次出现的下标
list.add(5);
System.out.println(list.lastIndexOf(5));// 1
removeAll从一个集合中删除另一个集合所包含的元素
list.removeAll(list2);
System.out.println(list);
数组和list之间的相互转换
//toArray把集合转换成数组
Object[] arr=list.toArray();
System.out.println(Arrays.toString(arr));
//数组转集合
List l=Arrays.asList(arr);
System.out.println(l);
新闻展示案例
package com.jredu.oop.ch01;

public class Theme {
private int id;
private String title;
private String remark;
public Theme(int id, String title, String remark) {
super();
this.id = id;
this.title = title;
this.remark = remark;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.jredu.oop.ch01;

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

public class Ch02 {

public static void main(String[] args) {
// TODO Auto-generated method stub
//声明集合
List list=new ArrayList<>();
//声明要存储的数据
Theme theme=new Theme(1, "主题1", "主题简介");
Theme theme2=new Theme(2, "主题2", "主题简介2");
//添加数据到集合中
list.add(theme);//theme为地址
list.add(theme2);
//显示数据
for(int i=0;i<list.size();i++){
//父类Object强转成子类Theme
Theme t=(Theme)list.get(i);
//通过get方法获取对应属性值
System.out.println(t.getId()+"\t"+t.getTitle()+"\t参与调查 调查结果");
System.out.println("\t"+t.getRemark());
}
}
}