Java入门教程十二(集合与泛型) (2)

List 接口实现了 Collection 接口,它主要有两个实现类:ArrayList 类和 LinkedList 类。在 List 集合中允许出现重复元素。与 Set 集合不同的是,在 List 集合中的元素是有序的,可以根据索引位置来检索 List 集合中的元素,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类推

ArrayList 类

ArrayList 类提供了快速的基于索引的成员访问方式,对尾部成员的增加和删除支持较好。使用 ArrayList 创建的集合,允许对集合中的元素进行快速的随机访问

ArrayList():构造一个初始容量为 10 的空列表。 ArrayList(Collection<?extends E>c):构造一个包含指定 Collection 的元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。

ArrayList 类除了包含 Collection 接口中的所有方法之外,还包括 List 接口

E get(int index) 获取此集合中指定索引位置的元素,E 为集合中元素的数据类型 int index(Object o) 返回此集合中第一次出现指定元素的索引,如果此集合不包含该元 素,则返回 -1 int lastIndexOf(Obj ect o) 返回此集合中最后一次出现指定元素的索引,如果此集合不包含该 元素,则返回 -1 E set(int index, E element) 将此集合中指定索引位置的元素修改为 element 参数指定的对象。 此方法返回此集合中指定索引位置的原元素 List<E> subList(int fromlndex, int tolndex)返回一个新的集合,新集合中包含 fromlndex 和 tolndex 索引之间的所有元素。包含 fromlndex 处的元素,不包含 tolndex 索引处的元素 List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.get(0);//得到1 List sublist=new ArrayList(); sublist=list.subList(0,2); //subList 为1,2 LinkList类

LinkedList 类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。需要频繁向集合中插入和删除元素时,使用 LinkedList 类比 ArrayList 类效果高
LinkedList 类除了包含 Connection 接口和 List 接口

void addFirst(E e) 将指定元素添加到此集合的开头 void addLast(E e) 将指定元素添加到此集合的末尾 E getFirst() 返回此集合的第一个元素 E getLast() 返回此集合的最后一个元素 E removeFirst() 删除此集合中的第一个元素 E removeLast() 删除此集合中的最后一个元素 LinkedList<String> products=new LinkedList<String>(); //创建集合对象 String product1=new String("product1"); String product2=new String("product2"); products.getFirst();//得到product1 Set集合

Set 集合也实现了 Collection 接口,它主要有两个实现类:HashSet 类和 TreeSet类。Set 集合中的对象不按特定的方式排序,只是简单地把对象加入集合,集合中不能包含重复的对象,并且最多只允许包含一个 null 元素

HashSet

HashSet 类是按照哈希算法来存储集合中的元素,使用哈希算法可以提高集合元素的存储速度,当向 Set 集合中添加一个元素时,HashSet 会调用该元素的 hashCode() 方法,获取其哈希码,然后根据这个哈希码计算出该元素在集合中的存储位置,

HashSet():构造一个新的空的 Set 集合。 HashSet(Collection<? extends E>c):构造一个包含指定 Collection 集合元素的新 Set 集合。其中,“< >”中的 extends 表示 HashSet 的父类,即指明该 Set 集合中存放的集合元素类型。c 表示其中的元素将被存放在此 Set 集合中。 HashSet hs=new HashSet(); //调用无参的构造函数创建HashSet对象 HashSet<String> hss=new HashSet<String>(); //创建泛型的 HashSet 集合对象 String name=new String("HelloWorld"); String name1=new String("HelloWorld1"); hss(name); hss(name1);

如果向 Set 集合中添加两个相同的元素,则后添加的会覆盖前面添加的元素,即在 Set 集合中不会出现相同的元素

TreeSet

TreeSet 类同时实现了 Set 接口和 SortedSet 接口。SortedSet 接口是 Set 接口的子接口,可以实现对集合升序排序。TreeSet 只能对实现了 Comparable 接口的类对象进行排序,因为 Comparable 接口中有一个 compareTo(Object o) 方法用于比较两个对象的大小

包装类(BigDecimal、Biglnteger、 Byte、Double、 Float、Integer、Long 及 Short) 按数字大小比较 Character 按字符的 Unicode 值的数字大小比较 String 按字符串中字符的 Unicode 值的数字大小比较

TreeSet 类除了实现 Collection 接口的所有方法之外,还有以下方法

E first() 返回此集合中的第一个元素。其中,E 表示集合中元素的数据 类型 E last() 返回此集合中的最后一个元素 E poolFirst() 获取并移除此集合中的第一个元素 E poolLast() 获取并移除此集合中的最后一个元素 SortedSet<E> subSet(E fromElement,E toElement) 返回一个新的集合,新集合包含原集合中 fromElement 对象与 toElement 对象之间的所有对象。包含 fromElemen t对象,不包含 toElement 对象 SortedSet<E> headSet<E toElement〉 返回一个新的集合,新集合包含原集合中 toElement 对象之前的所有对象。 不包含 toElement 对象 SortedSet<E> tailSet(E fromElement) 返回一个新的集合,新集合包含原集合中 fromElement 对象之后的所有对 象。包含 fromElement 对象 TreeSet<Double> treeSet=new TreeSet<Double>(); treeSet.add(0.02); treeSet.add(0.01); treeSet.add(0.03); for(int i=0;i<treeSet.toArray().length;i++) { System.out.print(treeSet.toArray.toArray()[i]); //依次输出 0.01,0.02,0.03 } SortedSet<Double> headTreeSet =scores.headSet(0.02); //headTreeSet内只有0.01

自然排序时只能向 TreeSet 集合中添加相同数据类型的对象,否则会抛出 ClassCastException 异常

Map集合

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjjzy.html