集合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 ...
随机推荐
- spring 整合 mongo
spring 非常强大,不仅在jdbc访问提供了jdbctemplate,而且在mongo访问上提供了mongoTemplate.闲话不多说,下边开始整合mongoTemplate. ONE: 添加s ...
- redis 的源码编译安装
首先我们下载软件包到指定的目录下 tar -zxvf redis-2.8.19.tar.gz cd redis-2.8.19 make make PREFIX=/usr/local/redis ins ...
- 并查集(union-find)算法
动态连通性 . 假设程序读入一个整数对p q,如果所有已知的所有整数对都不能说明p和q是相连的,那么将这一整数对写到输出中,如果已知的数据可以说明p和q是相连的,那么程序忽略p q继续读入下一整数对. ...
- C#-WinForm-用户控件如何获取父级窗体
1:在父窗体中定义需要在用户控件中用到的控件属性,比如,我要修改一个textbox控件.页面定义这个textbox的属性是:protected System.Web.UI.WebControls.Te ...
- console.log((function f(n){return ((n > 1) ? n * f(n-1) : n)})(5))调用解析
console.log((function f(n){) ? n * f(n-) : n)})()); 5被传入到函数,函数内部三元计算,5 > 1成立,运算结果是5*f(4),二次运算,5*4 ...
- 私有项目免费使用Git
GitHub,私有项目是要收费了,如果想建立私有项目可以选择GitLab. GitLab注册地址:https://gitlab.com/users/sign_in 本机需要安装git,图形化的工具使用 ...
- HTTP请求头
了解HTTP请求,是每个BS程序员必备的素质.下面篇幅进行记录.参考网址:http://tools.jb51.net/table/http_header Http请求方式 GET: 向Web服务器请求 ...
- python学习笔记-(十六)python操作mysql
一. mysql安装 1. windows下安装mysql 1.1. 下载源: http://dev.mysql.com/downloads/installer/,请认准对应版本 Windows (x ...
- 裁剪要素出现错误 :HRESULT:0x80040239
pFeatureBuffer = pOutFeaCls.CreateFeatureBuffer(); pFeatureCursor = pOutFeaCls.Inser ...
- html5新增的主体结构元素
1. article 主体结构元素 通常是一篇文章.一个页面.一个独立完整的内容模块一般会带个标题,并放在 header 标签中,article 元素可以互相嵌套,使用频率极高,强调独立性,多注意下 ...