标签:
集合框架总结:
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);
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]
标签:
原文地址:http://www.cnblogs.com/dragon1013/p/5063355.html