集合List内容
集合List内容
这次我们学习的主要内容为:集合框架 List
一 集合框架介绍
List集合与数组的区别:
不同点:1> 数组的长度在使用前必须确定,一旦确定不能改变。而List集合长度可变,无须定义。
2> 数组中必须存放同一数据类型的数据,List集合中可以存放不同类型的数据。
数组举例:String[] name=new String[5];
二 List集合的常用方法
返回类型 |
方法名称 |
说明 |
boolean |
add(Object obj) |
加入元素,返回是否添加成功 |
void |
clear() |
清除集合中的元素 |
boolean |
contains(Object obj) |
查找集合中是否存在传入的元素 |
Object |
get(int index) |
获取指定位置的元素 |
boolean |
isEmpty() |
判断集合是否为空 |
Object |
Remove(int index) |
删除指定位置的元素,并返回该元素 |
int |
size() |
获取集合的大小 |
Object[] |
toArray() |
将集合转换成数组 |
注意:保存基本类型时用到了装箱拆箱;保存对象应重写equals方法。
数组操作:
package com.huizhong;
public class ArrayDemo {
public static void main(String[] args) {
String[] array=new String[3];
for (int i = 0; i < 3; i++) {
array[i]="hello";
}
String str=array[0];
System.out.println(str);
}
}
List集合:
package com.huizhong;
import java.util.*;
public class ListDemo {
public static void main(String[] args) {
ArrayList list=new ArrayList();
for (int i = 0; i < 3; i++) {
list.add("hello");
String str=(String) list.get(0);
System.out.println(str);
}
}
}
未重写equals前
package com.huizhong;
import java.util.*;
public class Demo {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add(new Student("tom",15));
list.add(new Student("carry",35));
list.add(new Student("hamoey",20));
System.out.println(list);
}
}
package com.huizhong;
class Student {
String stuName;
int stuAge;
public Student(String stuName,int stuAge){
this.stuName=stuName;
this.stuAge=stuAge;
}
}
输出结果:
重写equals后:
package com.huizhong;
import java.util.*;
public class Demo {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add(new Student("tom",15));
list.add(new Student("carry",35));
list.add(new Student("hamoey",20));
System.out.println(list);
}
}
package com.huizhong;
class Student {
String stuName;
int stuAge;
public Student(String stuName,int stuAge){
this.stuName=stuName;
this.stuAge=stuAge;
}
}
输出结果:
三 List集合实际上包含了3个常用的集合类,即ArrayList,Vector和LinkedList。
ArrayList采用数组保存元素,意味着当大量添加元素,数组空间不足时,依然需要通过新建数组,内存复制的方式来增加容量,效率较低;而当进行对数组进行插入,删除操作时,又会进行循环移位操作,效率也较低;只有进行按下标查询时(get方法),使用数组效率很高。
Vector与ArrayList的内部实现相似,Vector设计为线程安全,ArrayList设计为非线程安全。为了保证线程安全,Vector在性能方面稍逊于ArrayList,目前我们编写的都是单线程应用程序,应选择使用ArrayList。
ArrayList与LinkedList均设计为非线程安全,ArrayList内部采用数组实现(与Vector相同),LinkedList内部采用链表结构实现。
LinkedList采用链表保存元素,在添加元素时只需要进行一次简单的内存分配即可,效率较高;进行插入,删除操作时,只需对链表中相邻的元素进行修改即可,效率也很高;但进行按下标查询时,需要对链表进行遍历,效率较低。
学习了这章的内容后,我们就会深有体会,在存多个用户的信息时给我们提供了很多的便利,比数组好用多了,因此我们要灵活的掌握它,我们学习时要多总结,多比较,理解其特性,将他学会学懂.
集合List内容的更多相关文章
- java中list集合的内容,如何使用像数据库中group by形式那样排序
java中list集合的内容,如何使用像数据库中group by形式那样排序,比如:有一个 List<JavaBean> 他中包含了一些如下的内容JavaBean:name mone ...
- laravel的filter()方法的使用 (方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容)
filter 方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容: $collection = collect([1, 2, 3, 4]); $filtered = $collec ...
- 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件
通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的脾气秉性(二). 前言 读完上篇<通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的本质(一).>,相信大家对sp ...
- 对list集合的内容分组
/** * 把list集合里的内容按照len大小分组 * @param list * @param len * @return */ private static List<List<St ...
- 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中
List<Person> list = new List<Person> { new Person{Name="张三",Age=20,Email=" ...
- .NET 基础 一步步 一幕幕[数组、集合、异常捕获]
数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...
- luogg_java学习_09_泛型_集合
这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 泛型 泛型介绍 1).类内部的属性的类型可以由外部决定: 2) ...
- Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...
- JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...
随机推荐
- Macbook被格式化之后
macbook不小心被手贱格式化了,开机显示一个大问号. 于是查询得到恢复方式是使用command+R. 照做了,试了好几次,那个地球还是卡住不动的.都没有提示让我输入wifi密码. 于是又查了一下, ...
- WPF自适应可关闭的TabControl 类似浏览器的标签页
效果如图: 虽然说是自适应可关闭的TabControl,但TabControl并不需要改动,不如叫自适应可关闭的TabItem. 大体思路:建一个用户控件,继承自TabItem,里面放个按钮,点击的时 ...
- cookie学习指南
一.什么是cookie cookie也叫HTTP cookie,最初是用来客户端和服务器端进行会话用的,由于HTTP是一种无状态的协议,为了维持用户和跟踪用户信息,所以引入了cookie和sessio ...
- 使用CocoaPods开发并打包静态库
Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大.通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用,而又不愿意 ...
- c#线程间操作UI-Invoke和BeginInvoke
利用Invoke和或BeginInvoke实现线程间操作UI的简单例子. /* 窗体包含一个button和一个richtextbox控件 * 注:必须在子线程中执行Invoke和或BeginInvok ...
- Message启动菜单个性化制作工具V1.0.3.1最终版
特点及功能 1.可以全新制作Message启动菜单文件!也可以选择修改已存在的菜单文件,制作或预览时会提示以哪个菜单版本为核心启动菜单. 2.支持更换背景图片,也支持图片标准化防止启动时黑屏,在选择背 ...
- Map工具系列-01-Map代码生成工具说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- 错误信息:内存位置访问无效。 (Exception from HRESULT: 0x800703E6)
错误提示: 错误信息:内存位置访问无效. (Exception from HRESULT: 0x800703E6) 异常类型:System.BadImageFormatException 堆栈跟踪: ...
- linux中ls命令
ls跟dos下的dir命令是一样的都是用来列出目录下的文件 ls参数: -a: ls -a 列出文件下所有的文件,包括以"."开头的隐藏文件(linux下文件隐藏文件是以.开头的, ...
- 《Python核心编程》 18.多线程编程(一)
一进程和线程 1参考链接: http://www.zhihu.com/question/25532384 中OF小工和zhonyong 的回答 总结他们两的回答: 引言: 1.电脑的运行,在硬件上是C ...