单例集合体系:

---------| collection  单例集合的根接口
--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的
------------------| ArrayList  ArrayList底层维护了一个object数组的实现的。(线程不安全),特点:查询速度快,增删速度慢。(有序,可重复
------------------| LinkedList  LinkedList底层是使用链表结构实现的,线程不安全,特点:查询速度慢,增删速度快。(有序,可重复
------------------| Vector(了解即可)  底层也是维护一个Object数组的实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低
--------------| Set  如果实现了set接口的集合类,具备的特点:无序,不可重复     注:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的
------------------| HashSet  底层是用于一个哈希表支持的。线程不安全,特点:存储速度块
------------------| TreeSet  底层是使用红黑树(二叉树)数据结构实现的,线程不同步(即线程不安全),不能在多线程中共享,但可以使用synchroinzedMap()方法来实现同步。特点:会对元素进行排序存储(按自然顺序

双例集合体系:

----------| Map  双例集合的根接口。如果是实现了Map接口的集合类,具备的特点:存储的数据都是以键值对形式存在的,键不可重复,值可以重复
--------------| HashMap  底层是基于哈希表实现的,HashMap允许键和值为null,线程不安全,特点:存储速度块
--------------| TreeMap  基于红黑数(二叉树)数据结构实现的,线程不同步(即线程不安全),特点:会对元素经行排序存储
--------------| HashTable(了解即可)   线程安全


1、ArrayList集合

 ArrayList一些常用方法几乎和collection集合一样的

    1、 collection集合的一些常用方法

2、 ArrayList集合的特有迭代器

  listIterator():返回列表中的列表迭代器

2、ArrayList集合的优点 (ArrayList集合就是传说中的动态数组)

2.1、动态的增加和减少元素 
  2.2、实现了ICollection和IList接口 
  2.3、灵活的设置数组的大小

3、ArrayList与Vector的区别

相同点:ArrayList与Vector底层都是使用Object数组实现的.

不同点:
    1.ArrayList是线程不同步的,操作效率高;Vector是线程同步的,操作效率低
    2.ArrayList是jdk1.2出现的,Vector是jdk1.0出现的

4、实例

例1

 package com.dhb.collection;

 import java.util.ArrayList;
import java.util.Iterator; /**
* @author DSHORE / 2018-5-16
*
*/
public class Demo5 {
public static void main(String[] args) {
//创建ArrayList集合
ArrayList<Object> list = new ArrayList<Object>();
//添加
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add(,"老七");//跟下标插入元素
System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六];说明“老七”把“李四”替换了
ArrayList<Object> list2 = new ArrayList<Object>();
list2.add("安其拉");
list2.add("亚瑟");
list2.add("赵云");
list.addAll(list2);//把list2集合中的数据添加到list集合中
System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六, 安其拉, 亚瑟, 赵云] //获取迭代器
Iterator<Object> it = list.listIterator();
while (it.hasNext()) { //hasNext()和next()都是迭代器(listIterator)下面的方法
Object o = it.next();
System.out.print(o+",");//返回值:张三,老七,李四,王五,赵六,安其拉,亚瑟,赵云,
}
}
}

例2

 package com.dhb.collection;

 import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner; /**
* @author DSHORE / 2018-5-17
*
*/
/*
* 3:使用集合实现注册登陆功能,
* 第一步: 提示用户选择功能, A(注册) B(登陆) 。 要求: 功能选择 的时候要忽略大小写。
* 注册:
* 1. 提示用户输入注册的账号(数字)与密码,如果输入账号已经存在集合中,提示用户重新输入。
* 注册完毕之后,把集合中的所有用户信息打印出来。
* 登陆:
* 提示用户输入登陆的账号与密码,如果账号与密码这个用户已经存在集合中,那么登陆成功,否则登陆失败。
* */ class User{
int id;//账号
String passWord;//密码
public User() {
}
public User(int id, String passWord) {
super();
this.id = id;
this.passWord = passWord;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "User [id=" + id + ", passWord=" + passWord + "]";
}
}
public class Demo14 {
//static:把sc和coll共享了
static Scanner sc = new Scanner(System.in);//创建一个扫描器
static Collection<User> coll = new ArrayList<User>();//创建一个ArrayList集合 父类的引用类型指向子类的对象(多态)
public static void main(String[] args) {
while(true){
System.out.println("请选择功能: A(注册账号) B(登录系统) C(退出系统)");
String option = sc.next();//option:选择 ; 扫描你输入的选项,这里用next就好。用nextInt:说明接收类型是int类型.
if("A".equalsIgnoreCase(option)){//equalsIgnoreCase:忽略大小写;即:你输入小写a或大写A,都是相等的。好比:验证码
reg();//注册账号
}else if("B".equalsIgnoreCase(option)){
login();//登录系统
}else if("C".equalsIgnoreCase(option)){
System.out.println("已成功退出系统!");
System.exit();//退出虚拟机(退出系统)
//break;
}else {
System.out.println("您的输入有误,请重新输入您的选项!");
}
}
}
//登录
private static void login() {
System.out.println("请输入您的账号:");
int id = sc.nextInt();//扫描你输入的账号。因为id是int类型,所以next后面要加Int
System.out.println("请输入您的密码:");
String passWord = sc.next();//扫描你输入的密码。因为不是int类型,所以不用加Int
//遍历集合中的元素,并查看该用户是否存在
Iterator<User> it = coll.iterator();//获取迭代器
boolean flag = false;//标记
while (it.hasNext()){//遍历出所有元素;it.hasNext():判断集合中是否还有下一个元素。有 则返回值为true
User u= (User) it.next();//遍历下一个元素
if(u.id == id && u.passWord.equals(passWord)){
flag = true;
//System.out.println("登录成功...");
}/*else {
System.out.println("账号或密码错误,请重新登录!");
}*/
if(flag == true){
System.out.println("登录成功...");
}else{
System.out.println("账号或密码错误,请重新登录!");
}
}
// if(!coll.contains(id)){//如果coll集合不包含id,说明该账号不存在
// System.out.println("账号不存在!");
// }
}
//注册
private static void reg() {
User user = null;
while (true) {
System.out.println("请输入账号:");
int id = sc.nextInt();
user = new User(id,null);//这里只需要判断id(账号) //将账号放到u对象里面
if(coll.contains(user)){
System.out.println("该账号已存在,请重新输入!");
}else {
break;//退出循环
}
}
System.out.println("请输入密码:");
String passWrod = sc.next();
user.setPassWord(passWrod);//将密码放到u对象里面
coll.add(user);//把u对象存储到ArrayList集合中去;这样做的目的是:保障当前注册的账号和密码的内存地址一致
System.out.println("注册成功...");
System.out.println("当前注册人员的账号:"+user.getId());
}
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/9052617.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础32 List集合下的ArrayList集合的更多相关文章

  1. Java基础语法(自定义类、ArrayList集合)

    Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...

  2. Java基础六(自定义类、ArrayList集合)

    今日内容介绍1.自定义类型的定义及使用2.自定义类的内存图3.ArrayList集合的基本功能4.随机点名器案例及库存案例代码优化 ###01引用数据类型_类 * A: 数据类型 * a: java中 ...

  3. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...

  4. java基础29 迭代器 listIterator() 及各种遍历集合的方法

    listIterator() 迭代器包含了 Iterator() 迭代器中的所有方法. 1.ListIterator的常用方法 hasPrevious() :判断是否还有上一个元素,有则返回true  ...

  5. 深入理解java集合框架之---------Arraylist集合

    ArrayList简介 ArrayLIst是动态数组,用MSDN的说法就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小,要注意 ...

  6. 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换

    ------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类:        Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...

  7. java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。

    import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...

  8. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

  9. 深入理解java集合框架之---------Arraylist集合 -----添加方法

    Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensur ...

随机推荐

  1. 洛谷P3994 Highway(树形DP+斜率优化+可持久化线段树/二分)

    有点类似NOI2014购票 首先有方程$f(i)=min\{f(j)+(dep_i-dep_j)*p_i+q_i\}$ 这个显然是可以斜率优化的... $\frac {f(j)-f(k)}{dep_j ...

  2. bzoj 3611: [Heoi2014]大工程 && bzoj 2286: [Sdoi2011消耗战

    放波建虚树的模板. 大概是用一个栈维护根节点到当前关键点的一条链,把其他深度大于lca的都弹出去. 每次做完记得复原. 还有sort的时候一定要加cmp!!! bzoj 3611 #include&l ...

  3. CentOS7防火墙firewalld使用

    1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...

  4. 四、Linux学习之文件处理命令

    1.建立目录:mkdir 格式:mkdir –p [目录名] -p     递归创建目录 注意事项: 如果是创建单个目录直接mkdir [目录名就可以] 如果是创建一个目录下的目录也就是递归创建目录请 ...

  5. svn服务器搭建(windows)

    转载:https://blog.csdn.net/daobantutu/article/details/60467185 本教程会从最基本的下载安装到上传代码,下载代码这条线来详细讲述如何完成SVN服 ...

  6. org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法

    org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread ...

  7. oracle改进之将阿拉伯数字转换成中文数字

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处   http://www.cnblogs.com/king-xg/p/6839738.html 将阿拉伯数字转 ...

  8. 解决body设置height:100%无效问题

    1. 解决html设置height:100%无效问题 通常我们需要让自己的网页内容能够更好的适配各种屏幕大小,会采用height:100%,但是我们发现问题出来了,height:100%无效,其实解决 ...

  9. bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对

    http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...

  10. 大数据时代快速SQL引擎-Impala

    背景 随着大数据时代的到来,Hadoop在过去几年以接近统治性的方式包揽的ETL和数据分析查询的工作,大家也无意间的想往大数据方向靠拢,即使每天数据也就几十.几百M也要放到Hadoop上作分析,只会适 ...