集合
来源:互联网 发布:vasp软件安装 编辑:程序博客网 时间:2024/05/17 09:33
学习集合的时候感觉乱七八糟的,今天趁着复习的时间好好总结一番,如有不如意的地方请指出,鄙人将感激不尽。
首先可以根据集合框架图来理顺这章的内容。
上图只是为了很好地说明问题,并不是完整的Collection集合图,如EnumSet 、AbstractQueue等都没在图中表示出来。
1.set集
在java语言中,java.util.set与数学上的set集合的意义一致,都是不允许有重复的元素出现。set接口只有从Collection继承下来的方法,并没有添加自己的新方法。注意这儿并不代表它的实现类没有添加新的方法。
A. 散列集 HashSet
HashSet是无序集,它的顺序是不定的。
当向其中添加元素时,先调用元素对象的hashCode()方法计算它的散列码,若散列码指向的位置为空,则可以加进去,反之则需要调用equals()方法判断两个对象是否相同,若相同,则不允许加入,反之能加入进去。
public class Collection {public static void main(String[] args){String str[]={"we","are","a","student","hello","a"};HashSet<String> set=new HashSet<>();for(String s:str)//给set添加元素{set.add(s);}System.out.println("第一次输出");for(Iterator<String> it=set.iterator();it.hasNext();)//迭代器{System.out.println(it.next());}//添加一个相同的字符串的情形String ss="a";set.add(ss);System.out.println("第二次输出");for(Iterator<String> it=set.iterator();it.hasNext();)//迭代器{System.out.println(it.next());}}}输出的结果:
第一次输出
hello
are
student
a
we
第二次输出
hello
are
student
a
we
B.TreeSet
TreeSet属于有序集,默认情况下是从小到大的顺序排列。同时也允许我们将自定义的Comparator对象传递给TreeSet构造器告诉TreeSet使用所提供的这种方式排序。
代码说明:
public class Collection {public static void main(String[] args){TreeSet<Person> sorttreeset=new TreeSet<>(new Comparator<Person>(){ public int compare(Person a,Person b) { return a.getAge()-b.getAge(); }});sorttreeset.add(new Person("张山",21));sorttreeset.add(new Person("丽丽",20));sorttreeset.add(new Person("海尒",17));sorttreeset.add(new Person("杰克",24));sorttreeset.add(new Person("魔姬",21));//按自己定义的方式排序System.out.println("输出sorttreeset");for(Iterator<Person>it=sorttreeset.iterator();it.hasNext();){System.out.println(it.next());}}}运行结果:
输出sorttreeset
Person [name=海尒, age=17]
Person [name=丽丽, age=20]
Person [name=张山, age=21]
Person [name=杰克, age=24]
由运行结果可以看出,出现重复元素时,会把多余的元素删除;
若存储的是自定义的类时,一定要定义它的比较器。否则会报错。
C.LinkedHashSet
数据结构是一种双链表,且是有序集,但是它的有序与TreeSet的有序稍微有点差别,它的有序是指按插入的顺序排列。LinkedHashSet中的方法只是继承了HashSet和Set中的方法。
代码:
public class Collection {public static void main(String[] args){LinkedHashSet<String> linkedhashset=new LinkedHashSet<>();String str[]={"hello","welcome","to","nanchang"};for(String s:str){linkedhashset.add(s);}for(Iterator<String>it=linkedhashset.iterator();it.hasNext();){System.out.println(it.next());}
}运行结果:
hello
welcome
to
nanchang
2.List接口
java.util.List<E>是列表,它表示的是有序列表(插入顺序)。允许包含重复的元素,也允许包含null元素。除了继承Collection的方法外,还增添了自己特有的方法,常用的有subList(),ListIterator<E> listIterator(),indexOf(Object o)等。
A.ArrayList
ArrayList是属于动态数组,它的存储大小不固定,可以储存null元素。
代码:
public class Collection {public static void main(String[] args){ArrayList<String> arraylist=new ArrayList<>();String str1[]={"hello","welcome","to","nanchang","nanchang",null};for(String s:str1){ arraylist.add(s);}for(Iterator<String>it= arraylist.iterator();it.hasNext();){System.out.println(it.next());}}}运行结果:
hello
welcome
to
nanchang
nanchang
null
B.LinkedList
LinkedList的数据结构是双向链表,它与ArrayList的优缺点可以很快就知道。操作与ArrayList类似。只不过是有属于自己的一些方法而已。如previous()。
。。。。队列后续补充
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 如何实现电商梦!
- oracle实现远程连接超简单;枚举与剪枝();PowerDesigner生成数据库代码注意里面的双引号,应该去掉
- 操作时序的错误笔记(18B20)
- JHOST邀请码
- 第2次实验——算法基本功 与 综合思考
- 集合
- swift 第一个IOS应用程序
- java从头学day03-2[函数概述]
- CoreText -- 基础
- 使用运算符重载实现复数的四则运算
- sass和less,优秀的前端样式预处理器
- android:descendantFocusability用法简析
- 细数百度公司的知名开源项目
- 6/10无聊