装箱和拆箱,集合,list,set,map
2018-07-20 05:49:49来源:博客园 阅读 ()
说道集合不得不说道数组,用来存储一组相同的数据,但是对于数组来说,频繁的增减程序效率太差,只能够从一个数组扩充到另一个数组,
而且由于是连续分布查找效率低下,所有对于今后的存储一般使用集合;
集合分为collection 和map接口;
其中collection接口有有子接口:list和set;
在集合中存储的数据是一组对象,可以是任意一种引用数据类型,没有数组只能存储一组数据类型的限制;
1、装箱和拆箱
对于8种基本数据类型,想要存储到集合中需要转换为包换类;
byte, short ,int ,long ,float, double, boolean, char
对于它们的包装类分别为:
Byte, Short, Integer, Long, Float, Double , Boolean, Character;
a. 装箱
将8种基本类型转换为转换为包装类,可以用语法:对应的包装类.valueOf(基本类型数据)进行转换;字符串形式也可以;
注意虽然基本数据类型转为包装类,如果没有使用new进行构造方法转换,-128-127的数据是在常量池里面,得到的数据地址仍然相等。
b. 拆箱
将包装类转换为基本数据类型;
使用语法:包装类对象. 基本类型value()
如果是字符串可以使用:parse.基本类型(字符串),转换为基本类型
现在大多数的转型都可以进行自动拆箱装箱,不用进行手动转换。(——注意数组类型不可以自动转换为包装类的数组类型,所有以后使用数组类型应用包装类的数组类型。)
1、list
list数组存放的是有序、不唯一的对象;
list接口的实现类是:arraylist和linklist
a、 arraylist:
特点:不同步,线程不安全,性能好;对于存取适用,查找快,但不利于增删;
可使用普通for,增强for和迭代器循环遍历数组元素;
如果需要在遍历时进行增删操作,应该使用iterator迭代器;
使用实例:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class a1 {
public static void main(String[] args) {
List l=new ArrayList<>();
l.add("aa");
l.add("bb");
l.add("cc");
Iterator it=l.iterator();
while (it.hasNext()) {
String str = (String) it.next();//一个循环中一般只能出现一次next
if(str.equals("bb")){
it.remove();
continue;
}
System.out.println(str);
}
System.out.println(l);
}
}
结果:
aa
cc
[aa, cc]
另外:list还有一种迭代器:listiterator,可以向前(previous)和向后取值;
b. linklist
链表集合,有序(指的是存入和取出的顺序一致)不唯一;
特点:增删方便,线程不安全,由于每一次查找都要从头到尾查找,所以查找效率低;
可以使用:普通for,增强for,iterator,进行遍历循环;
2、 set
set集合中可以存储无序、唯一的对象;
实现的子类是:hashset;
只能存储一个null;
如果需要对于一个对象中的某一个属性作为唯一的值,需要进行equals和hashcode重写;
遍历循环:增强for、iterator;
主要方法:add()增,remove()删,contain()是否包含某一元素;
3、 map
map集合中存储的是一组键值对key和value,它们是一一对应的关系;
key值是唯一的,不能有重复,而value是可以重复的值;
所以map是由set和list组成;
map的实现子类是:hashmap
使用方法有:put()添加键值对,get()通过键来获取值;
有三种视图:
a、 keyset():获取所以的map键,返回set集合;
b、 values():获取所以的值,返回collection;
c、 entryset();键值集,获取键值对;
使用实例:
导入包:
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
代码:
public static void main(String[] args) {
Map<String, String> map=new HashMap<>();
map.put("a", "张三");
map.put("b", "李四");
map.put("c", "王五");
//使用键集遍历;
System.out.println("键集遍历:");
for (String string : map.keySet()) {
System.out.println("键:"+string+"值:"+map.get(string));
}
System.out.println("值集遍历:");
for (String string : map.keySet()) {
System.out.println("值:"+map.get(string));//不能通过值来获得键
}
System.out.println("键值对遍历:");
Set<Entry<String, String>> entrys = map.entrySet();
for (Entry<String, String> entry : entrys) {
System.out.println("键:"+entry.getKey()+"值"+entry.getValue());
}
System.out.println("直接输出map:"+map);
}
}
输出:
键集遍历:
键:a值:张三
键:b值:李四
键:c值:王五
值集遍历:
值:张三
值:李四
值:王五
键值对遍历:
键:a值张三
键:b值李四
键:c值王五
直接输出map:{a=张三, b=李四, c=王五}
当然:也可以使用iterator遍历输出;
如何进行数组和集合之间的转换:
a、集合到数组:toArray()方法;
b、数组到集合:Arrays.asList(数组);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 与JAVA集合相遇 2020-06-11
- Java笔记:集合 2020-06-10
- 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重 2020-06-09
- Java电子书高清PDF集合免费下载 2020-06-05
- 拼多多+携程+蚂蚁金服技术面集合,刷完这份面试题,助你拿of 2020-05-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash