Vector:线程安全,但速度慢,已被ArrayList替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。取出List集合中元素的方式:

get(int  index):通过脚标获取元素。

iterator():通过迭代方法获取迭代器对象。

ArrayList和Vector类都是基于数组实现的List类,Vector比较古老,被ArrayList取代了;

ArrayList是线程不安全的,而Vector是线程安全的,但是即使这样,也不推荐使用Vector,因为Collections有方法可以得到线程安全的ArrayList对象;

Collections类: static  List synchronizedList(List list) 返回指定列表支持的同步(线程安全的)列表。

Queue接口

继承Collection接口

模拟队列:先进先出(FIFO);

void add(Object e):将e插入到队列尾部;

Object element():获取队列头部的元素;

boolean offer(Object e):将e插入到队列的尾部,当使用有容量限制的队列时,此方法比add(Object e)方法更好。

Object peek():获取队列头部的元素。如果此双端队列为空,则返回 null。

Object poll():获取并删除队列头部的元素。如果此双端队列为空,则返回 null。

Object remove():获取并删除队列头部的元素。

Eg:练习:List的使用

设计Department  和 Employee 对象类(按照开发的样式没有写在一个文件里面)

//一个员工只可以有一个部门,所以按照普通的写法

//一个部门可以有许多员工,所以按照集合的写法;

//员工

package re538.Department;

public class Emp {

private Dept dept;//一个员工只可以有一个部门,所以按照普通的写法

private String name;

public Dept getDept() {

return dept;

}

public void setDept(Dept dept) {

this.dept = dept;

}

public Emp(String name) {

super();

this.name = name;

}

public String toString(){//覆写toString方法

return this.name+"";

}

}

//部门

package re538.Department;

import java.util.List;

public class Dept {

private String name;

private List emp;//一个部门可以有许多员工,所以按照集合的写法;部门里的属性,员工!

public Dept(String name) {

super();

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List getEmp() {

return emp;

}

public void setEmp(List emp) {

this.emp = emp;

}

private Dept parent;//一个部门只有一个直接主管部门,所以普通写法

private List children;//但是一个部门可以管理很多部门,充当很多部门的直接主管部门,所以使用集合

public Dept getParent() {

return parent;

}

public void setParent(Dept parent) {

this.parent = parent;

}

public List getChildren() {

return children;

}

public void setChildren(List children) {

this.children = children;

}

public String toString(){

return this.name.toString();

}

}

//测试类,主方法!

package re538.Department;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

public class TestDemo {

public static void main(String[] args) {

Emp e1 = new Emp("刘亦菲");

Emp e2 = new Emp("章泽天");

Emp e3 = new Emp("张月娟");

Emp e4 = new Emp("王二五");

Emp e5 = new Emp("刘昭");

List list = new ArrayList();//把员工丢尽集合去

list.add(e1);

list.add(e2);

list.add(e3);

list.add(e4);

list.add(e5);

for (Object object : list) {//把员工给遍历出来,使用的是直接的foreach(四种方法之一)

System.out.println("----->"+object);

}

System.out.println("-------------------");

Dept d = new Dept("部门");//定义出一个部门来接收员工

d.setEmp(list);//把员工这个集合丢到部门去。

Dept d1 = new Dept("itcast");

Dept cditcast = new Dept("成都传智播客");

Dept gzitcast = new Dept("广州传智播客");

Dept d4 = new Dept("CSDN");

System.out.println(d4);

List children = new ArrayList();

children.add(cditcast);

children.add(gzitcast);

d1.setChildren(children);//定义直接被主管部门(集合)

d1.setParent(d4);//定义直接主管部门

Iterator it = children.iterator();//运用到了迭代遍历,四种之一!

while(it.hasNext()){

System.out.println(it.next());

}

}

}

java List接口中常用类的更多相关文章

  1. Java并发包中常用类小结(一)

    从JDK1.5以后,Java为我们引入了一个并发包,用于解决实际开发中经常用到的并发问题,那我们今天就来简单看一下相关的一些常见类的使用情况. 1.ConcurrentHashMap Concurre ...

  2. Java并发包中常用类小结(二)

    6.ThredPoolExecutor ThredPoolExecutor是基于命令模式下的一个典型的线程池的实现,主要通过一些策略实现一个典型的线程池,目前已知的策略有ThreadPoolExecu ...

  3. Java集合框架(常用类) JCF

    Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...

  4. Java—Map接口中的常用方法

    Map接口与Collection接口的区别 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储. Map中的集合,元素是成对存在的(理解为夫妻).每 ...

  5. Java基础——6种常用类讲解

    本文主要介绍几种Java中常用类的应用. 一.System类 从API当中我们可以看出,public final class System exends Object.System类包含一些有用的字段 ...

  6. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

  7. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...

  8. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

  9. java 8 Stream中操作类型和peek的使用

    目录 简介 中间操作和终止操作 peek 结论 java 8 Stream中操作类型和peek的使用 简介 java 8 stream作为流式操作有两种操作类型,中间操作和终止操作.这两种有什么区别呢 ...

随机推荐

  1. vue自定义全局公共函数

    单独零散的函数 在main.js里进行全局注册 Vue.prototype.ajax = function (){} 在所有组件里可调用 this.ajax() 多个函数定义在一个对象里 // xx. ...

  2. Collection Iterator 迭代器

    Collection c=new ArrayList(); c.add(123); //迭代器遍历集合 Iterator i=c.Iterator(); while(i.hasNext()) { Sy ...

  3. 源码:自己用Python写的iOS项目自动打包脚本

    http://www.cocoachina.com/ios/20160307/15501.html 什么?又要测试包! 做iOS开发几年了,每天除了码代码,改Bug之外,最让我烦恼的莫过于测试的妹子跑 ...

  4. node项目搭建

    一:安装 1.简单安装法 下载.msi [编译好的nodejs]  ->  点击安装 [系统会自动配置系统变量]   2.复杂安装法(不推荐) 由于nodejs的源码由C++和js组成 同时需要 ...

  5. oracle审计实施

    1.语句审计 Audit session;  Audit session By ; 与instance连接的每个会话生成一条审计记录.审计记录将在连接时期插入并且在断开连接时期进行更新. 保留有关会话 ...

  6. node.js(连接mysql)

    mysql语句中的SQL sql语句中的分类: ---DDL:(data define language)定义数据列(create,drop,alter,truncate) ---DML:(data ...

  7. 获取表单所有字段 Post

    var params = $(".layui-form").serializeArray(); var values = {}; for (x in params) { value ...

  8. 【C++】关于map的遍历 删除

    int main(int argc, char* argv[]) { map<string, string> mapData; mapData["a"] = " ...

  9. 2019.9.19登陆注册猜数字给奖品combo

    #注册函数 def register(): registor_count = 0 while registor_count < 3: username_inp = input('user nam ...

  10. GIAC2019 演讲精选 | 面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码

    一直以来, 如何从‘视觉稿’精确的还原出 对应的UI侧代码 一直是端侧开发同学工作里消耗比较大的部分,一方面这部分的工作 比较确定缺少技术深度,另一方面视觉设计师也需要投入大量的走查时间,有大量无谓的 ...