Java Collecion的常用方法
import java.util.*;
/**
* 数组存储数据的特点:
* ①一旦初始化,大小确定
* ②一旦定义,存储的类型确定且相同。
* 数组存储的弊端:
* ①大小无法改变。
* ②方法较少,插入、删除元素不便且效率较低。
* ③数据有序、可重复,对于无序、不可重复的无法满足要求。
* ④无法直接获取数组中实际元素的个数。
*/
/** Collection接口方法集合
col.add(); //添加单个元素
col.addAll(); //传入Collection
col.size(); //实际存储的个数
col.isEmpty(); //判断是否为空
col.contains(); //判断是否包含,调用equals()方法
col.containsAll();
col.iterator(); //返回迭代器对象
col.toArray(); //返回Object类型的数组
col.remove(); //移除,查找时调用equals()方法 删除成功,返回true 否则返回false
col.removeAll(); //求差集,并修改当前集合
col.retainAll(); //求交集
col.clear(); //清空
col.hashCode();
col.equals();
*/
public class CollectionTest {//单列集合15个方法测试
public static void main(String[] args) {
//1.Collection下的方法*********************
Collection col1 = new ArrayList();
col1.add(123);
col1.add("Jack");
col1.add(new Person(12,"Lisa"));
col1.add(false);
col1.add(12.0);
System.out.println(col1.contains(new Person(12,"Lisa"))); //true Person类重写了equals()方法
System.out.println(col1.size());//5
System.out.println(col1.isEmpty());//false
Object[] arr = col1.toArray();//返回Object数组
for(Object obj: arr){
System.out.println(obj);
}
//123
//Jack
//ColletionStudy.Person@2429e0 Person类没有实现toString()方法
//false
//12.0
Collection col2 = new ArrayList();
col2.add(123);
col2.add("Jack");
col2.add(new Person(12,"Lisa"));
col1.retainAll(col2);//求交集,并修改col1
System.out.println("交集:");
for(Object obj:col1){
System.out.println(obj);
}
col1.removeAll(col2);//col中删除col2的部分
for(Object obj:col1){
System.out.println(obj);
}
//false
//12.0
//1end***********************************
//2.迭代器遍历*****************
Iterator iterator = col1.iterator();//每次调用iterator()返回的都是一个新的迭代器。指针指向第一个元素的前一个位置。
while (iterator.hasNext()){//迭代器原理:刚开始,指针指向第一个元素的前一个位置。
System.out.println(iterator.next());//先调用next,指针下移;再返回下移后指针指向的元素
iterator.remove();
//调用迭代器的方法,移除当前元素,而不是调集合的方法
}
//可能报NoSuchElementException异常:已经没有了,还调用next()
//可能报IllegalStateException异常:没有指向,掉remove()
//2end**************************
//3.Arrays.asList()***************
List list1 = Arrays.asList(123,456);//传入可变参数
System.out.println("list1 = " + list1);//list1 = [123, 456]
List list2 = Arrays.asList(new int[]{123,456});//会被当成一个元素
System.out.println("list2 = " + list2);//list2 = [[I@75b84c92]
//error: List<Integer> list3 = Arrays.asList(new int[]{123,456});
List<Integer> list3 = Arrays.asList(new Integer[]{123,456});
System.out.println("list3 = " + list3);//list3 = [123, 456]
List list4 = Arrays.asList(new Integer[]{123,456});//传入对象数组
System.out.println("list4 = " + list3);//list3 = [123, 456]
//3end*******************************
}
}
import java.util.Objects;
/**
* @author :Zhifei Zhang
* @date :Created in 2021-03-03 23:31
* @description:
* @modified By:Hickey
* @version: $
*/
public class Person {
int age;
String name;
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
}
Java Collecion的常用方法的更多相关文章
- java线程的常用方法
java线程的常用方法 编号 方法 说明 1 public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2 public void run() 如果该线程 ...
- Java中的常用方法
Java中的常用方法 第一章 字符串 1.获取字符串的长度:length() 2.判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s).后缀 endsWit ...
- Java 中String常用方法
java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len ...
- java多线程的常用方法(以及注意事项)
/* * 线程的常用方法 * 1.start(); * 2.run(); * 3.sleep(int millsecond); * 4.isAlive(); -->判断线程是否还在运行 * 5. ...
- Java中String常用方法
java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len= ...
- Redis JAVA客户端 Jedis常用方法
Jedis 是 Redis 官方首选的 Java 客户端开发包 (redis的java版本的客户端实现) #MAVEN配置 <dependency> <groupId>redi ...
- Java Class类常用方法描述
一 生成Class对象的三种方式 1 Class.forName("全路径名") 2 类名.Class 3 实例对象.getClass() 接着看三种方式生成Class对象的区别 ...
- java基础系列(二):java数据结构及常用方法
1.数组Array (1)创建数组 dataType[] arrayName = new dataType[length];必须指定大小,否则会报错:如果不想指定大小,应采用声明数组变量的方式 dat ...
- JAVA String类常用方法
一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...
随机推荐
- g77介绍 g77 是 Fortran77 的编译器。它对 Fortran 77 标准提供完备的支持,并支持 Fortran 90 和 95 的部分特性。 由于 Fortran 77 标准在数值计算中的影响力,g77 可能是应用最广的Fortran编译器。 在 GCC 4.0 之前,g77 是 GCC 的一部分,但现在,g77 已经停止开发。
GFORTRAN 维基百科,自由的百科全书 跳到导航 跳到搜索 此条目需要扩充. (2018年11月2日)请协助改善这篇条目,更进一步的信息可能会在讨论页或扩充请求中找到.请在扩充条目后将此模 ...
- origin2018去掉demo水印
消除demo字样 有的origin破解完成后,使用没问题,但导出的图有demo水印.其实不需要重装,只需要下载一个补丁即可解决. 1. 把下载到的origin.exe复制到安装文件夹 2. 双击执行一 ...
- flink-cdc读取postgres报异常,没有发布表
异常信息 must be superuser to create FOR ALL TABLES publication 必须是超级用户才能为所有发布表创建 网上搜索了一天,都毫无头绪,后面搜索到了一个 ...
- 【Python】神器:Streamlit,仅使用Python开发一个运维管理后台(不需要编写html,js,css)
背景 作为SRE,我们有很多很多自动化的工具,大部分都是自动运行的,还有一部分是CLI,我们一直苦于没有一个自己的管理后台网站,受限于前端能力薄弱,开发出来的网页只能说凑活能用,但是不好用. 现在我们 ...
- Linux的top命令cpu占用少,但是显示很高
最近发现服务器一个奇怪的问题,40核的双路服务器,装的centos7.4系统,开机过几个小时后会图形界面特别卡顿,top里发现CPU使用率50%左右,但是进程里没有大量占用的进程.怎么上传不了图片.. ...
- mysql 多字段联合唯一索引
6个字段组成联合唯一索引 索引名称code_level_metric_type_week_year sql语句联合索引 CREATE UNIQUE INDEX code_level_metric_ty ...
- MinkowskiBroadcast广播
MinkowskiBroadcast广播 MinkowskiBroadcastAddition广播加法 class MinkowskiEngine.MinkowskiBroadcastAddition ...
- BEP 7:CUDA外部内存管理插件(下)
BEP 7:CUDA外部内存管理插件(下) Numba依赖 向库中添加EMM插件的实现自然会使Numba成为库的依赖项,而以前可能没有.为了使依赖关系可选,如果需要的话,可以有条件地实例化并注册EMM ...
- PageHelper--Mybatis分页插件(ssm框架下的使用)
1.导入PageHelper依赖 <!-- MyBatis 分页插件 --> <dependency> <groupId>com.github.pagehelper ...
- 基于Typescript的Vue项目配置国际化
基于Typescript的Vue项目配置国际化 简介 使用vue-i18n插件对基于Typescript的vue项目配置国际化,切换多种语言, 配合element-ui或者其他UI库 本文以配置中英文 ...