开始之前,先讲一个String字符串类型,看到String,大家觉得它是一个类,还是一个普通的数据类型呢???
从写法上看String开头大写,便可以猜测它一个类(引用数据类型),是java提供封装好的类(是jdk/jre/lib/rt.jar包提供的String.class)
ArrayList
ArrayList是一个容器.
容器支持的数据类型: 支持引用数据类型(包括:类,接口,枚举,数组)
容器特点:
1.数据排序:有序
index:0-> hello
index:1-> world
index:n-> ....
2.数据重复性:可重复
ArrayList常用Api
创建ArrayList list=new ArrayList();
- 往集合添加数据
list.add(...);
2.从集合中去取出数据
list.get(index);
3.从集合中移除数据
list.remove(...);
4.获取list集合的大小(长度): size()
5.其他api:
isEmpty(..),判断集合是否空
contains(..),判断是否包含某数据
set(.),修改某个位置
代码示例如下:
public static void main(String[] args) {
// 保存昵称Tom到内存中
String nickName = "Tom";
// 存放N个同学昵称怎么办呢?——>这里用集合ArrayList
// ArrayList:集合数组列表且是可变的集合数组
// ArrayList最大索引是集合长度减1: list.size()-1
// ArrayList使用需要创建对象
// 为什么要创建对象,因为 ArrayList从命名规范上看它其实一个类,类中提供的api,需要实例化对象才可以调用
// <>尖括号用来存放数据的数据类型(且只能是引用数据类型),这里要存放的是nickName(String类型)
// 创建ArrayList 集合对象
ArrayList<String> list = new ArrayList<>();
// 添加数据
list.add("Tom");
list.add("rose");
list.add("jon");
// 取出数据
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
// 修改数据
list.set(0, "Rtom");//0代表索引位置
System.out.println(list.get(0));
// 移除数据
list.remove(0);
System.out.println(list.get(0));
// 判断集合是否为空
System.out.println(list.isEmpty());
// 判断集合是否包含某个字符
System.out.println(list.contains("jont"));
}
打印结果如下:
Tom
rose
jon
Rtom
rose
false
false
ArrayList循环打印
(1) 普通for循环
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
// 添加数据
list.add("Tom");
list.add("rose");
list.add("jon");
//循环取出list集合中的元素
for(int index=0;index<=list.size()-1;index++){
System.out.println(list.get(index));
}
}
打印结果:
Tom
rose
jon
(2)增强for循环:foreach ->jdk1.5以后的新特性,推荐使用
image.png
public static void main(String[] args) {
System.out.println(age);
ArrayList<String> list = new ArrayList<>();
// 添加数据
list.add("Tom");
list.add("rose");
list.add("jon");
//eclispe 输入fore可以自动输出增强for循环
for (String name : list) {//list是集合实例对象,name是用来接收list遍历元素
System.out.println(name);
}
}
HashSet
image.pngimage.png
常见api示例代码:
public static void main(String[] args) {
//创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
HashSet<String> set =new HashSet<>();
//集合添加元素
set.add("tom");
set.add("tom");
set.add("jones");
set.add("hello");
//获取set集合大小
System.out.println(set.size());//输出结果为3
}
上述代码获取集合大小为什么是3呢??-》因为set集合特点是 不可重复,而上述代码中tom元素添加了2次,是重复的元素,占用的是同一个内存,所以集合大小是3
其他举例:
public static void main(String[] args) {
//创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
HashSet<String> set =new HashSet<>();
set.add("tom");
set.add("tom");
set.add("jones");
set.add("hello");
set.remove("tom");
System.out.println(set.isEmpty());
System.out.println( set.contains("hello"));
//清空set集合
set.clear();
System.out.println(set.size());//输出集合大小为0
}
上面打印结果:
false
true
0
HaspSet增强for循环
image.png上图代码如下:
public static void main(String[] args) {
// 创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
HashSet<String> set = new HashSet<>();
set.add("tom");
set.add("tom");
set.add("jones");
set.add("hello");
set.remove("tom");
set.add("world");
set.add("helloworld");
// 增强for循环
for (String name : set) {
System.out.println(name);
}
}
HaspMap
image.pngimage.png
常见Api代码示例如下:
public static void main(String[] args) {
// 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
HashMap<String ,String> map=new HashMap<>();
//map集合添加元素 map.put(key,value)
map.put("name", "tom");
map .put("age", "20");
map.put("sex", "male");
map.put("name","jones");
System.out.println(map.size());//key不能重复,所以集合大小为3
//通过key取值
System.out.println(map.get("name"));
//移除:通过key移除对应的vaule
map.remove("name");
System.out.println(map.get("name"));//输出为null,key缺省值时默认为null
}
}
上述代码执行结果:
3
jones
null
因为:key不能重复,如果重复,后者键值对覆盖前者,随意集合大小为3,name对应的value是jones,
key缺省默认值是null
HaspMap循环
(1)获取所有的key
public static void main(String[] args) {
// 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
HashMap<String, String> map = new HashMap<>();
// map集合添加元素 map.put(key,value)
map.put("name", "tom");
map.put("age", "20");
map.put("sex", "male");
map.put("name", "jones");
// 获取所有的key:map调用keySet(),返回值类型是Set接口
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
}
}
打印结果:map也是无序的
sex
name
age
(2)获取所有的value
public static void main(String[] args) {
// 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
HashMap<String, String> map = new HashMap<>();
// map集合添加元素 map.put(key,value)
map.put("name", "tom");
map.put("age", "20");
map.put("sex", "male");
map.put("name", "jones");
// 获取所有的key:map盗用values(),返回值类型是Collection(是个接口)
Collection<String> values = map.values();
for (String value : values) {
System.out.println(value);
}
}
打印结果:
male
jones
20
(3)通过key获取对应的值
public static void main(String[] args) {
// 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
HashMap<String, String> map = new HashMap<>();
// map集合添加元素 map.put(key,value)
map.put("name", "tom");
map.put("age", "20");
map.put("sex", "male");
map.put("name", "jones");
// 获取所有的key:map调用keySet(),返回值类型是Set(是一个接口)
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(map.get(key));
}
}
打印结果:
male
jones
20
网友评论