集合框架基础知识点
来源:互联网 发布:淘宝销量排行榜怎么看 编辑:程序博客网 时间:2024/04/29 07:54
作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
第一篇博客会写集合框架,说实话我也想不到,刚好今天刚学完集合框架,所以想趁热打铁,这篇博客就这样诞生了。
这只是基础知识点,以后学会相关难点会再补充。
先贴一张简略集合框架相关图
这部分相关接口和类在Java.util 包中
这里面有4个接口分别是 Collection ,Set , List , Map 接口 Collection是相当于Object一样的上层接口 其他的就是继承与它的子接口 使用框架时尽量用多态(父类引用指向子类对象)比如使用ArrayList
Collection<E> c = new ArrayList<>();
c.add(E e);
好处是以后想用 LinkedList 时可以直接改,不用改变下面方法,因为下面方法只有Collection的没有ArrayList独有的。
Collection接口的方法如下 (JDK1.6的API)
Set 中对象是无序的且不能重复(equals)
List 中对象是有序的且可重复
Array 数组 查找快 添加删除对象慢 (本来就有下标值 , 添加删除时 移动大量对象 )
Linked 链表 查找慢 添加删除对象快 (用指针相连接 查找得一个个查, 添加删除 改动相应指针就好)
Hash 前两者之间
Map 有键(名)值 (可以看成索引和内容), 键值(键和值)不能重复 , 相关方法
Map例子程序
import java.util.*;
public class TestMap {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
Map<String, Integer> map1 = new TreeMap<>();
map.put("a", 1); //自动把1打包成对象 必须放入对象
map.put("b", 2);
map.put("c", 3);
map1.put("A", 1);
map1.put("B", 2);
System.out.println(map.size());
System.out.println(map);
System.out.println(map.containsKey("a"));
System.out.println(map1.containsValue(1));
if(map.containsKey("a")) {
int i = map.get("a"); //自动解包 Integer自动解包
System.out.println(i);
}
Map map2 = new HashMap(map);
map2.putAll(map1);
System.out.println(map2);
}
}
输出:
3
{a=1, b=2, c=3}
true
true
1
{a=1, A=1, b=2, B=2, c=3}
Iterator 迭代器 : 用来遍历集合的接口
使用遍历集合场景 c是上面定义的
Iterator<E> i = c.iterator<>(); //用iterator() 方法就可以不用在类前面实现 Iterator 接口
while(i.hasNext()) {
i.next();
}
Collections类 它提供了提供了一些静态方法实现基于 List 容器的相关算法
使用排序和洗牌方法 如下
Collections.sort(c);
Collections.shuffle(c);
如果是一些自定义的类如(Student,Dog类) 控制排序方法就得实现Comparable接口(此接口在lang包中不用implements),实现compareTo()方法
例子如下
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Test implements Comparable<Test>{
private String firstName; //定义名字的名
private String lastName; //定义名字的姓
public Test(String firstName, String lastName) { //构造方法
super();
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() { //输出对象的方法
return firstName +"," +lastName ;
}
public int compareTo(Test t) {
int a = lastName.compareTo(t.lastName); //先比较姓 字符串有自己的compareTo方法
return(a != 0 ? a : firstName.compareTo(t.firstName)); //如果姓比较完等于0再比较名 ,不等于0就返回a
}
public static void main(String[] args) {
List c = new LinkedList<>();
c.add(new Test("cbc","bc"));
c.add(new Test("bac","bc"));
System.out.println(c);
Collections.sort(c);
System.out.println(c);
}
}
输出:
[cbc,bc, bac,bc]
[bac,bc, cbc,bc]
第一篇博客就这样结束了,写完了虽然身体很累但是心不累,我想这大概就是当程序猿的一种乐趣 。
中间也许会有些不好的地方和错误 , 大家发现了多多提出 ,必然好好改进!
- 集合框架基础知识点
- 关于集合框架Collection基础知识点的理解掌握
- 集合框架知识点
- 集合框架知识点
- Java集合框架知识点
- java集合框架知识点
- 集合框架知识点(全)
- java基础知识点集合
- struts框架基础知识点
- 集合框架知识点总结(1)
- 集合框架相关知识点(二)
- 集合框架知识点总结(一)
- 集合框架相关知识点(二)
- Java集合框架知识点总结
- java集合基础知识点总结
- 黑马程序员——java基础----集合框架知识点总结(一)
- 黑马程序员———Java基础------集合框架知识点总结(二)
- Java集合框架基础
- SQL Server无法删除数据库,因为该数据库当前正在使用的解决办法
- Java开发之路
- python中的迭代
- 【11】Servlet
- IBOutlet 与IBAction
- 集合框架基础知识点
- c primer plus笔记
- 求助,javax.persistence.Table.indexes()
- 【12】Servlet中的默认映射问题
- ifconfig解析
- android悬浮控件-仿360手机助手应用详情页
- 自定义控件: 万能下拉刷新及上拉加载控件SuperRefreshLayout-2
- Delphi & BC++ 按钮单击事件代码查找
- 静