Java学习----集合框架总结
集合框架总结:
Collection接口:
Set接口:
HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高
LinkedHashSet//是HashSet的扩展,支持规则集内元素的排序,按元素插入集合的顺序进行提取
TreeSet//保证集合中的元素是有序的,与HashSet相反
List接口:
ArrayList
LinkedList
Vector
Stack//派生于Vector,栈
Map接口:
HashMap//效率高
LinkedHashMap//按照添加顺序存储,可以按添加顺序取出
TreeMap排序性
1 Collection接口
这个接口是处理对象集合的根接口。它实现了几种方法:
add();
size();
iterator();
Iterator接口:
next();
hasNext();
remove();
2 Set接口
package General;
import java.util.*;
import java.io.*;
public class hashSetTest{
public static void main(String[] args) throws FileNotFoundException{
Set<String> words=new HashSet<String>();
//方法1:这个方法不需要抛出异常
//InputStream inStream=SetTest.class.getResourceAsStream("C:/Users/Maria/Desktop/文件/SDN.txt");
//方法2:这个方法需要抛出异常
InputStream inStream = new FileInputStream("C:/Users/Maria/Desktop/文件/SDN.txt");
Scanner in=new Scanner(inStream);
while(in.hasNext())
words.add(in.next());
Iterator<String> iter2=words.iterator();
for(int i=0;i<words.size()&&iter2.hasNext();i++)
System.out.print(iter2.next()+" ");
System.out.println();
System.out.println(words.size());
System.out.println(words);//使用toString输出集合
}
} HashSetTest.java
1 输出结果为:
2
3 tyjk ikkl tyujy tukyukuil wse egrerrtuhtirefdhrtj uyku yukuilopcvg gteg
4 9
5 [tyjk, ikkl, tyujy, tukyukuil, wse, egrerrtuhtirefdhrtj, uyku, yukuilopcvg, gteg]
SortedSet<String>sorter=new TreeSet<String>();
sorter.add("Bob");
sorter.add("Alice");
sorter.add("Carl");
for(String s:sorter)
System.out.println(s+" ");
1 结果为:
2 Bob Alice Carl
但是TreeSet如何知道希望元素怎样排序呢,第一种方法,树集假定插入的元素实现了Comparable接口。这个接口定义了一个方法。
1 public interface Comparable<T>
2 int compareTo(T other);//将这个对象(this)与另一对象(other)进行比较,如果this位于other之前则返回负值;如果两个对象在排序顺序中处于相同位置返回0;如果this位于other之后则返回正值。
第二种方法,通过将比较器Comparator对象传递给TreeSet构造器来告诉树集使用不同的比较方法。
1 public interface Comparable<T>
2 int compareTo(T a,T b);
3.1 ArrayList具体类(数组列表)
package General;
import java.util.*;
import java.io.*;
public class ArrayListSetTest{
public static void main(String[] args) throws FileNotFoundException{
Set<String> set=new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("c");
set.add("d");
Iterator<String> iter1=set.iterator();
while(iter1.hasNext())
System.out.print(iter1.next()+" "); //使用Iterator输出集合
System.out.println();
for(String e:set)
System.out.print(e+" "); //使用For Each输出结合
System.out.println();
System.out.println(set);//使用toString输出集合
} ArrayListSetTest.java
1 输出结果为:
2 a b c d
3 a b c d
4 [a, b, c, d]
package General;
import java.util.*;
public class LinkedListTest {
public static void main(String[] args) {
List<String> a=new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
System.out.println(a); List<String> b=new ArrayList<String>();
b.add("d");
b.add("e");
b.add("f");
b.add("g");
System.out.println(b); //ListIterator在Iterator基础上添加了add(),previous()和hasPrevious()方法
ListIterator<String> aIter=a.listIterator();
//普通的Iterator只有三个方法,hasNext(),next()和remove()
Iterator<String> bIter=b.iterator(); //b归并入a当中,间隔交叉得插入b中的元素
while(bIter.hasNext())
{
if(aIter.hasNext())
aIter.next();
aIter.add(bIter.next());
}
System.out.println(a); //在b中每隔两个元素删除一个
bIter=b.iterator(); while(bIter.hasNext())
{
bIter.next();
if(bIter.hasNext())
{
bIter.next();//remove跟next是成对出现的,remove总是删除前序
bIter.remove();
}
}
System.out.println(b); //删除a中所有的b中的元素
a.removeAll(b);
System.out.println(a);
}
} LinkedListTest.java
结果为:
[a, b, c]
[d, e, f, g]
[a, d, b, e, c, f, g]
[d, f]
[a, b, e, c, g]


Java学习----集合框架总结的更多相关文章
- java学习——集合框架(Collection,List,Set)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...
- Java学习——集合框架【4】
一.集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实 ...
- 【转】Java学习---集合框架那些事
[原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...
- java学习——集合框架(泛型,Map)
泛型: ... Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对. map集合中必须保 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
随机推荐
- C#针对DataTable进行分页方法
以下的分页方法是针对数据量不是非常大的数据进行的,是在内存中进行的分页操作. /// <summary> /// DataTable分页 /// </summary> /// ...
- CentOS下安装gcc和gdb
我的操作系统是CentOS6.4,安装源里自带了gcc4.4.0和gdb7.0,版本略老遂删除之重新安装. gcc 1.下载源码包,解压 //下载 wget http: //ftp.gnu.org/g ...
- Reachability几个常用方法
http://oncerios.diandian.com/post/2013-06-28/40050041969
- Java获取当前路径
1.利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user ...
- Spark RDD概念学习系列之rdd的依赖关系彻底解密(十九)
本期内容: 1.RDD依赖关系的本质内幕 2.依赖关系下的数据流视图 3.经典的RDD依赖关系解析 4.RDD依赖关系源码内幕 1.RDD依赖关系的本质内幕 由于RDD是粗粒度的操作数据集,每个Tra ...
- 关于fork有意思的两道题目
http://www.spongeliu.com/123.html 第一题,计算下面代码理论上总共打印了多少行:(网易2011笔试题) #include #include #include int m ...
- linux上安装rar解压软件
描述:Linux默认自带ZIP压缩,最大支持4GB压缩,RAR的压缩比大于4GB. -------------------------------------------------- 下载 # wg ...
- js 传参数
引用js实现传参数,然后在js文件里面动态加载东西,比如传递参数然后动态加载皮肤颜色,而我为了实现多语言,一般人家传递参数是为了区分版本用的还有清除js缓存问. <script src=&quo ...
- 【设计模式 - 19】之观察者模式(Observer)
1 模式简介 观察者模式的介绍: 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象的状态发生改变时,它的所有依赖者都会收到通知并自动更新. 发布者(被观察者) + 订阅者(观察者) ...
- AlgorithmVisualizer
http://jasonpark.me/AlgorithmVisualizer/#path=graph_search/floyd_warshall/shortest_paths