博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.9 java基础总结集合①LIst②Set③Map④泛型⑤Collections
阅读量:4646 次
发布时间:2019-06-09

本文共 1965 字,大约阅读时间需要 6 分钟。

集合①LIst②Set③Map④泛型⑤Collections

一、List:有顺序,可重复

实现类:
1、ArrayList 广泛,适用于查询,增删不频繁的(类似数组,其长度可按需增大,增删效率慢)
2、LinkedList 中间频繁增删的,查询效率低(双向链表,先进先出,不支持随机查找,必须重头开始查找,效率低)
3、Vector 类似ArrayList,线程安全,性能低

二、Set:没有顺序,不可重复

最多存一个null
实现类:
1、HashSet 速度快,不排序
2、TreeSet 速度慢,内部排序,看不到
3、LinkedHashSet 有序,不重复,顺序为放入顺序

三、Map 键值对 key-value 键不能重复,值可以。两者都可以是任意类型的对象实例

实现类:
1、HashMap 速度快,不排序
2、TreeMap 速度慢,内部排序
3、LinkedHashMap 排序

Linked:链表,前边加了这个的都表示有序的

List,Set 是Collection的子接口,Map不是,

Colection 的方法:

Size,add,remove ,clear , toArray;

List 的方法:

add(index,obj)
contains(Object o) 判断是否包含
//包含,比较的时候调用当前类型的equals方法,如果没有重写,就是Object的equals方法,即引用。所以重写equals方法可以达到想要的结果
//当且仅当列表包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时才返回 true

get(index)

set(index,Obj)
remove(index)
remove(Object)
如果是数字,直接是传下标那个,OBject里边有数字的,是自动封箱的包装类,不是基本数据类型

Set的方法:

add
remove
siza
contains

Map的方法:

put(K,V) 重新put可覆盖前边录入的信息
-get(key)
remove(key)
containskey(k)
containsvalue(value)
keySet() 所有键形成Set(不重复)
values() 所有值形成collection(可以重复)

四、泛型:允许在定义类、接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定。

指定了某种类型,只能放这种类型
List<Student> group = new ArrayList<Student>();
就只能放Student类型的,不用强转,也防止了加入其它类型

自己定义泛型

public class Hello<T>{
T t;//这里可不要,成员变量T
//类上边定义的泛型,只要有<>就可以了,里边是变量名,可以随便取名字,一般E表示元素,KV键值
public Hello(T t){
}
}

五、Collections工具类

1、Collections.sort(list);
自然顺序,可以排基本数据类型,String,包装类,引用的不可以,所以要自己设定排序规则
当设定排序规则后,这个就可以调用了
2、
public class Student implements Comparable{
public int compareTo(Object obj) {
Student stu = (Student)obj;
if(this.age > stu.getAge()){
return -1;
}else if(this.age < stu.getAge()){
return 1;
}
return 0;
}

}

这里还可以添加其他比较规则,比如年龄等等
大的排前边(从大到小)返回-1,因为数轴上小的在左边,

3、匿名内部类

Collections.sort(group, new Comparator<Student>(){
@Override
public int compare(Student in1, Student in2) {
if(in1.getName().compareTo(in2.getName()) > 0){
return -1;
}else if(in1.getName().compareTo(in2.getName()) < 0){
return 1;
}else{
return 0;
}
}//方法compare结束
}//类Comparator结束
);//sort方法结束

 

转载于:https://www.cnblogs.com/chenyuanqiu2008/p/5274228.html

你可能感兴趣的文章
轮播图笔记!
查看>>
值类型与引用类型
查看>>
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
查看>>
PAT 1023 Have Fun with Numbers[大数乘法][一般]
查看>>
三维空间中的几种坐标系
查看>>
乘法表
查看>>
4.express 框架
查看>>
Java基础算法集50题
查看>>
Android 桌面组件widget
查看>>
25-字符串
查看>>
萌新报道
查看>>
Asp.Net 获取物理路径
查看>>
Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫...
查看>>
Solr reRankQuery加自定义函数实现搜索二次排序
查看>>
latex学习(四)tlmgr
查看>>
centos6.5 bugzilla4.4.5 汉化
查看>>
ros topic 发布一次可能会接收不到数据
查看>>
字符串的扩展
查看>>
冒泡排序_c++
查看>>
linux常见术语示意
查看>>