Java-集合对象

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------GUI编程

Java-集合对象


Collection 
|--List:元素是有序的,元素可以重复,因为该集合体系有索引


|--ArrayList:底层使用的数据结构是数组结构,查询速度很快,但是增


删稍慢,线程不同步。

|-LinkedList:底层使用的数据结构式链表,增删速度很快,查询稍慢。

|-Vector:底层是数组数据结构,线程同步,被ArrayList替代了。


|--Set:元素是无序的,元素不可以重复

|--HashSet:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实


例)支持
HashSet是如何保证元素的唯一性呢?
是通过元素的两个方法,hashCode和equals来完成的,如果元素的


HashCode值相同,才会判断equals是否为true,如果元素的HashCode值不相同,则不会调用


equals。



|--TreeSet:可以对Set集合中的元素进行排序


底层数据结构为二叉树,保证元素唯一性的依据:compareTo方法return 


0 。


TreeSet排序的第一种方式:让元素 自身具有可比性,元素需要实现


Comparable接口,覆盖compareTo方法。这种排列方式称为自然顺序,或者叫做默认顺序。


TreeSet排序的第二种方式:当元素自身不具有比较性时,或者具备的比


较性不是所需的,这时就需要让集合自身具有可比性,可以通过构造方法:


TreeSet(Comparator<? super E> comparator)来实现,该构造方法构造一个新的


空 TreeSet,它根据指定比较器进行排序。


          


List:特有方法,凡是可以操作脚标的方法都是该体系特有的方法


共有方法 :
增:
add(index,element)
add(index,Collection)
删:
remove(index)
改:
set(index,element)
查:
get(index)
subList(from,to)
iterator()
ListIterator()


List集合特有的迭代器:ListIterator是Iterator的子接口。


在进行迭代操作时,不可以通过集合对象的方法操作集合中的内容,否则会发生


ConcurrentModificationException异常。所以,在进行迭代操作时,只能用迭代器的方法


来操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出和删除的操作。如果


想要其他的操作,诸如添加,修改等,就需要其子接口:ListIterator
该接口只能通过List集合的listIterator方法获取。


LinkedList:


List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。


除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 


元素提供了统一的命名方法。


 void addFirst(E e) 
          将指定元素插入此列表的开头。 
 void addLast(E e) 
          将指定元素添加到此列表的结尾。 
 
 boolean offerFirst(E e) 
          在此列表的开头插入指定的元素。 
 boolean offerLast(E e) 
          在此列表末尾插入指定的元素。
 
 E peekFirst() 
          获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。 
 E peekLast() 
          获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。 


 E pollFirst() 
          获取并移除此列表的第一个元素;如果此列表为空,则返回 null。 
 E pollLast() 
          获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。 




去除ArrayList集合中的重复元素
import java.util.*;
class ArrayListTest{
public static void main(String[] args){
System.out.println();
}
public static ArrayList singleElement(ArrayList al){
ArrayList newal = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext()){
Object obj = it.next();
if(!newal.contains(obj)){
newal.add(obj);
}
}
return newal;
}
}


TreeSet自定义排序练习
import java.util.*;
class TreeSetTest{
pulic static void main(String[] args){
TreeSet ts = new TreeSet();
ta.add();
ta.add();
ta.add();
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}


class StringLength implements Comparator
{
public int compare(Object o1, Object o2){
String s1 = (String)o1;
String s2 = (String)o2;


if(s1.length()>s2.length())
return 1;
if(s1.length()==s2.length())
return s1.compareTo(s2);
return -1;
}
}





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值