1.Collection

1.1概念

//Collection
Collection cArray = new ArrayList();
//add
cArray.add("HELLO");
cArray.add(8);
System.out.println(cArray);
System.out.println("Is contains:HELLO -" + cArray.contains("HELLO"));


1.1遍历方法-Lambda表达式


1.2遍历方法-Iterator接口

注意:


1.3使用Lambda方法遍历Iterator接口


1.4使用Foreach方法遍历

代码示例:

public static void main(String[] args) {
//Collection
Collection cArray = new ArrayList();
//add
cArray.add("HELLO");
cArray.add(8);
System.out.println(cArray);
System.out.println("Is contains:HELLO -" + cArray.contains("HELLO")); //Lambda
cArray.forEach(sy->System.out.println("Lambda:" + sy)); //Iterator
Iterator iter = cArray.iterator();
while (iter.hasNext()) {
String s = (String)iter.next();
System.out.println("Iterator:" + iter.next());
//Error
//cArray.remove(s);
} //Lambda-Iterator
Iterator i = cArray.iterator();// define a new Iterator, can not use iter
i.forEachRemaining(obj->System.out.println("Lambda-Iterator:" + obj)); //foreach
for(Object value:cArray)
{
System.out.println("foreach:" + value);
} }

1.5Predicate方法

public static void main(String[] args) {
//Collection
Collection cArray = new ArrayList();
//add
cArray.add("HELLO");
cArray.add("8");
cArray.add("aaa8");
System.out.println("Init:" + cArray);
System.out.println("Is contains:HELLO -" + cArray.contains("HELLO"));
//Predicate
cArray.removeIf(obj->((String)obj).length()<3); //remove length less than 3
cArray.removeIf(obj->((String)obj).contains("8")); //remove contains 8
System.out.println("After removeIf:" + cArray);
}

2.一个常用类和集合的简单例子:账号密码登录

package per.liyue.code.login;
public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String passWord;
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "用户名:" + this.id + " 密码:" + this.passWord;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
User user = (User)obj;
if ((user.id == this.id)) {
return true;
} else {
return false;
}
} }
package per.liyue.code.login;
import java.util.ArrayList;
import java.util.Collection;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.Scanner;
public class Init {
//static Scanner scanner = new Scanner(System.in);
static Collection users = new ArrayList<>(); public static void main(String[] args) {
// TODO Auto-generated method stub
while (true) {
System.out.println("请选择 A[注册] B[登录] C[退出]");
String option = getMyScanner().next();
// 注册
if ("a".equalsIgnoreCase(option)) {
User userNew = new User();
try {
reg(userNew);
} catch (InputMismatchException e) {
System.out.println("账号只能为数字类型,请重新输入:");
reg(userNew);
} System.out.println("注册成功!");
users.add(userNew);
printUser();
}
// 登录
else if ("b".equalsIgnoreCase(option)) {
try {
login();
} catch (InputMismatchException e) {
System.out.println("账号只能为数字类型,请重新输入:");
login();
} } else if ("c".equalsIgnoreCase(option)) {
System.out.println("退出系统!");
System.exit(0);
} else {
System.out.println("请输入正确的字母!");
}
} // while
// true
}
public static void reg(User userNew) throws InputMismatchException {
// id
while (true) {
System.out.println("请输入账号:");
int id = getMyScanner().nextInt();
if (users.contains(id)) {
System.out.println("账号已经存在,请重新输入!");
} else {
userNew.setId(id);
break;
}
} // while true id
// password
System.out.println("请输入密码,输入C返回菜单");
String passWord = getMyScanner().next();
userNew.setPassWord(passWord);
}
public static void printUser() {
Iterator iterator = users.iterator();
while (iterator.hasNext()) {
User user = (User) iterator.next();
System.out.println(user.toString());
}
}
public static void login() throws InputMismatchException {
while (true) {
System.out.println("请输入账号");
User userLog = new User();
userLog.setId(getMyScanner().nextInt());
System.out.println("请输入密码,输入C返回菜单:");
userLog.setPassWord(getMyScanner().next());
Iterator iterator = users.iterator();
boolean checkExists = false;
while (iterator.hasNext()) {
User user = (User) iterator.next();
if (user.equals(userLog)) {
checkExists = true;
}
}
if (checkExists) {
System.out.println("登录成功!");
} else {
System.out.println("请输入正确的账号密码!");
}
}
} public static Scanner getMyScanner(){
return new Scanner(System.in);
}
}

15.Colection集合和Iterator接口.md的更多相关文章

  1. 集合和Iterator迭代器

    集合 集合是java中提供的一种容器,可以用来存储多个数据. 注意: ①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中, 其实它是自动转换成 Integer 类后存入的,Java中每一 ...

  2. List集合和iterator并发异常处理

    一:List接口: 子类:ArrayList   LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...

  3. java基础33 Set集合下的HashSet集合和TreeSet集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  4. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  5. Iterator接口。集合输出

    在集合中支持以下几种方式. iterator ListIterator foreach输出 emumeration输出. 集合输出的标准操作: 集合输出的时候必须形成以下的思路:只要碰到了集合输出的操 ...

  6. Java集合的实现细节—Set集合和Map集合

    Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...

  7. Iterator 接口

    首先要从foreach说起,我们都知道对象,数组和对象可以被foreach语法遍历,数字和字符串却不行.其实除了数组和对象之外PHP内部还提供了一个 Iterator 接口,实现了Iterator接口 ...

  8. php迭代器Iterator接口

    以前也看过迭代器Iterator接口,感觉不如yied好用,因此实际工作中并没有用到过. 今天看了一篇网上的博客(https://www.cnblogs.com/wwjchina/p/7723499. ...

  9. java集合(2)-Collection与Iterator接口

    1 package com.j1803.collectionOfIterator; 2 import java.util.ArrayList; 3 import java.util.Collectio ...

随机推荐

  1. java下载excel,excel从数据库获取数据

    <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...

  2. GIT命令行笔记

    一次常规的初始化+推送: git initgit config user.email "you@example.com"git config user.name "asm ...

  3. 04 bash程序的基本特性

    我们知道Linux系统有两种操作方式,一种为GUI的图形界面化管理方式,其中图形程序常见的有Gnome.KDE.xfce:另一种管理方式就是就是GLI的命令行管理方式,而命令行的管理方式就是通过she ...

  4. elasticsearch License 到期后更新步骤

    ELK下载安装后有一个月试用期,到期后需要更新License,且每个License有效期为 1 年,License过期前10天里相关log会一直出现,提醒用户更新,支持实时更新无需重启服务. 步骤: ...

  5. java多线程的认识

    [线程定义]   定义:线程(英语:thread)是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程 ...

  6. 【Eclipse】eclipse自动提示+自动补全

    解决代码的自动提示问题: 1.打开 Eclipse -> Window -> Perferences 2.找到Java 下的 Editor 下的 Content Assist , 右边出现 ...

  7. getpass模块 ---- optparse

    getpass模块,不回显 常用方法 import getpass password=getpass.getpass('input your password: ').strip() 其他用法 use ...

  8. django-BaseCommand自带的权限分组

    note:  应该是这样的结构,并且commands名字是固定的. 执行: python manage.py  initgroup initgroup.py # -*- coding: utf-8 - ...

  9. CMD命令行合并多个txt文件到一个txt文件

    运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt  G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...

  10. redis 主从配置和集群配置

    主从配置 |  集群配置 redis主从 主从配置原因: 1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从 ...