集合

来源:互联网 发布:c语言定义一个函数 编辑:程序博客网 时间:2024/05/21 06:28

List集合
List:元素是有序的,元素可以重复
ArrayList al=new ArrayList();

增 加 : al.add();
在指定位置添加 al.(index,”“);

删除指定位置元素 al.remove(index);
修改元素 a1.set(index,”“)
通过 角标获取元素 al.get(index);
获取所有元素:

for(int x=0;x<al.size();x++){    al.get(x) }第二种方式: Iterator it=a1.iterator();   while(it.hasNext())   {         it.next();    }

通过indexof获取对象的位置:
al.indexof(“字符串”);

获取列表中两个位置之间的数:返回List

   ListIterator it=a1.ListIterator();       while(it.hasNext())//正向遍历       {             it.next();            it.set();//修改        }

逆向遍历
it.hasPrevious

List集合中的对象
LinkedList:底层使用的是链表结构。特点:增删速度快,但是查询稍慢 不同步
ArrayList :底层使用是的数组结构。特点:查询速度很快,但是增删稍慢。 同步的
Vecctor:底层使用是的数组结构。是同步的

Vector 使用:

Vector v=new Vector();
v.add();
v.add();

Enumeration en=new Enumeration ()

while(en.hasMoreElements())
{
en.nextElement();
}

LinkedList()集合;
特有方法:
addFirst();往前添加
addlast(0;往后添加

getFirst();//获取头值,永远是第一个值
getLast();//获取尾值

removeFirst();//删除并返回头元素 出现NuSuchElementException异常
removeLast();//删除并返回尾元素

1.6中出现了替代方法:
添加
offerFirst()
offerlast()
获取
peekFirst()
peekLast()
删除
pollfirst()
polllast()
LinkedList llist=new LinkedList();
set集合
Set集合:元素是有序的,元素值唯一,不允许重复。
HashSet:底层数据结构式哈希表,是通过元素的hashcode和equals来保证元素的唯一性。
如果元素的hashcode值相同,才会判断equals是否为true;
如果元素的hashcode的值不同,不会调用equals。
对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
TreeSet: 可以对Set集合中的元素进行自然排序。
底层数据是二叉树
排序方式一:
要让自定义对象是实现 Comparable接口,强制让对象具有比较性。排序时当主要条件相同时,一定要判断下次要条件。 然后重写compareTo()方法。 如果想要按原样顺序输出,则让compareTo()方法返回 1。
排序方式二:
当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。
在集合初始化的时候,就让集合具有比较性。
定义比较器,将比较器作为参数传递给TreeSet集合的构造函数。
hashSet使用 :
使用:

HashSet hs=new HashSet();hs.add(); Iterator it=hs.iterator();                while(it.hasNext){                   it.next(); } 

往HashSet集合中存入自定对象,姓名和年龄相同为同一个人。
复写equals和hashcode方法。

public boolean equals(Object obj){ if(!(obj.instanceof Person)) return false; Person p= (Person)obj; return               this.getname().equals(p.getname())&&this.getage()==p.getage(); } 复写hashcode方法 public int hashCode(){ return name.hashcode+age*12; }

TreeSet使用 :
使用:

TreeSet ts=new TreeSet(); ts.add(); Iterator it=ts.iterator();                      while(it.hasNext){ it.next(); } 

TreeSet存储自定义对象:往TreeSet集合中存储自定义对象,根据学生年龄进行排序。
排序方式一:让元素具备比较性要让自定义对象是实现 Comparable接口,强制让对象具有比较性。排序时当主要条件相同时,一定要判断下次要条件。然后重写compareTo()方法。
例:

public int compareTo(Object obj) { if(!obj instanceof Student) throw new RuntimeException("不是学生"); Student s=(Student)obj; if(this.age>s.age) return 1; if(this.age==s.age) return this.name.compareTo(s.name); return -1; } 

排序方式二:定义一个类实现comparator接口,覆盖compare方法。让集合具备比较性

TreeSet ts=new TreeSet(new MyCompare()); class MyCompare implements Comparator public int compare(Object o1,Object O2) {Student s1=(Student)o1; Student s2=(Student)O2; int num=s1.getName().compareTo(S2.getname());if(num==0) return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); }

Map集合
特点:
该集合存储键值对,一对一对的往里存,并且键是唯一的。
特点:要保证map集合中键的唯一性。

Map : Hashtable 底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的
hashmap 底层是哈希表数据结构,允许使用null值和null键,是不同步的,效率高
TreeMap 底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序。

1,添加。 put(key,value):当存储的键相同时,新的值会替换老的值,并将老值返回。如果键没有重复,返回null。
void putAll(Map);
2,删除。 void clear():清空 value remove(key) :删除指定键。
3,判断。 boolean isEmpty(): boolean containsKey(key):是否包含key boolean containsValue(value) :是否包含value
4,取出。 int size():返回长度 value get(key) :通过指定键获取对应的值。如果返回null,可以判断该键不存在。
当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。 Collection values():获取map集合中的所有的值。

5,想要获取map中的所有元素: 原理:map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。
之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法。

把map集合转成set的方法: Set keySet(); 将map中所有的键存到Set集合。 Set

Set keySet = map.keySet(); Iterator it = keySet.iterator(); while(it.hasNext()) {     Object key = it.next();      Object value = map.get(key);     System.out.println(key+":"+value);}

取出map集合中所有元素的方式二:entrySet()方法。

Set<map.entry<String,String>> entrySet = map.entrySet(); Iterator<map.entry<String,String>> it = entrySet.iterator();while(it.hasNext())     {           Map.Entry me = (Map.Entry)it.next();  System.out.println(me.getKey()+"::::"+me.getValue());      }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子一年级数学不及格怎么办 一年级孩子考试紧张怎么办 健身动作不标准怎么办 足球赛踢平了怎么办 踢球指甲淤血了怎么办 初中一年级成绩差怎么办 着火了怎么办小班教案 小孩爱玩游戏怎么办 幼儿上学哭闹老师怎么办 孩子不喜欢上幼儿园怎么办 幼儿喜欢脱鞋怎么办 幼儿在教室乱跑怎么办 转学学校不接收怎么办 留守儿童成绩差怎么办 感冒鼻孑堵咳嗽哮喘怎么办 二年级数学报怎么办 不敢翻前滚翻怎么办啊 大学全挂了怎么办 幼儿园热了怎么办教案 幼儿园小班热了怎么办教案 高考艺术生色弱怎么办 雾眉后出现白棱怎么办 lol皮肤重复了怎么办 怕篮球砸到怎么办 前滚翻向一侧偏怎么办 大腿肌肉比较发达怎么办 学计算机老了怎么办 新生儿头尖尖的怎么办 手抻筋了很疼怎么办 led灯盘上就坏了一颗灯怎么办 芯片灯坏了怎么办 太阳能板电压不够怎么办 激光电到眼睛怎么办 修脚店生意不好怎么办 led吊灯变暗闪烁怎么办 led吊灯一半闪烁怎么办 led灯总是闪烁怎么办 led吊灯打开闪烁怎么办 客厅水晶灯不亮怎么办 客厅吸顶灯不亮怎么办 模拟人生黑灯怎么办