java基础---集合

Posted 流着眼泪奔跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础---集合相关的知识,希望对你有一定的参考价值。

1-Java集合的特点
Collection接口:不唯一,无序
List接口:不唯一,有序
其中常用类:ArrayList、LinkedList
ArrayList实现了长度可变的数组;遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式。插入、删除元素时效率比较高
Set接口:唯一,无序
Map接口:键值对,提供key

接口可以继承接口

2-List集合常用方法

add(Object o) 向列表的尾部追加指定的元素

add(int index,Object o) 在列表的指定位置插入指定元素

get(int index) 返回列表中指定位置的元素

contains(Object o) 如果列表中包含指定的元素,则返回true

remove(int index) 移除列表中指定位置的元素

remove(Object o) 移除列表中出现的首个指定元素

clear() 从列表中移除所有元素

size() 返回列表中的元素数

举例:
//ArrayList的使用
ArrayList alist=new ArrayList();

//添加元素
alist.add("a");
alist.add(1,"b");
alist.add(2,"c");
alist.add(3,"d");
alist.add(4,"e");

//获取集合最后一个元素
Object ob=alist.get(alist.size()-1);
System.out.println("集合中的最后一个元素是:"+ob);

//获取集合元素个数
System.out.println("集合元素个数:"+alist.size());

//循环迭代集合
for(Object s:alist){
System.out.print(s+" ");
}
System.out.println();

//查看元素
if (alist.contains("c")) {
System.out.println("存在对象");
}else{
System.out.println("不存在");
}

//移除元素
alist.remove(3);
System.out.println("查看移除后的元素");
for(Object s:alist){
System.out.print(s+" ");
}

 

3-ArrayList
添加元素add()
删除元素remove()
获取元素get()
修改,先查询对象是否存在,再修改对象的属性

特点,可变数组,查询效率比较高

举例:
//集合中存放的元素默认都是Object
ArrayList alist=new ArrayList();
User u1=new User("u001", "123456");
User u2=new User("u002", "123456");
User u3=new User("u003", "123456");
User u4=new User("u004", "123456");
User u5=new User("u005", "123456");

//添加元素
alist.add(u1);
alist.add(u2);
alist.add(u3);
alist.add(u4);
alist.add(u5);

//获取元素集合
System.out.print("集合元素个数为");
System.out.println(alist.size());

//循环迭代集合
for(Object s:alist){
System.out.println(s+" ");
}
System.out.println();

//获取集合中第3个元素
Object ob=alist.get(2);
//方法一:一般情况,使用父类方法
System.out.println("显示第三个元素");
System.out.println(ob);
//方法二:强制转换
User u=(User)ob;
System.out.println(u.getUname()+","+u.getPassword());
System.out.println();

//移除元素
alist.remove(u3);
System.out.print("移除后元素 ");
for (Object object : alist) {
System.out.println(object);
}
System.out.println();

//查看元素
System.out.print("是否存在u2?");
if (alist.contains(u2)) {
System.out.println("存在对象");
}else{
System.out.println("不存在");
}

//查看集合中是否存在名称为u004的User对象,如果存在,修改密码为888888
for (int i = 0; i <alist.size(); i++) {
User use=(User) alist.get(i);
if (use.getUname().equals("u004")) {
System.out.println("元素存在,修改密码");
use.setPassword("888888");
System.out.println("修改密码成功");
break;
}
}

//查看修改完的集合中元素
for(Object s:alist){
System.out.println(s+" ");
}

4-LinkedList:插入、删除元素时效率比较高

addFirst(Object o) 将给定元素插入此列表的开头

addLast(Object o) 将给定元素追加到此列表的结尾

getFirst() 返回此列表的第一个元素

getLast() 返回此列表的最后一个元素

reomveFirst() 移除并返回此列表的第一个元素

removeLast() 移除并返回此列表的最后一个元素

父类的声明子类的实现,不能调用子类的方法

举例:
LinkedList list=new LinkedList();

User u1=new User("u001","123456");
User u2=new User("u002","123456");
User u3=new User("u003","123456");
User u4=new User("u004","123456");
User u5=new User("u005","123456");

//添加元素
list.add(u1);
list.add(u2);
list.addFirst(u3);//添加第1个索引位置
list.addLast(u4);//添加到最后一个索引位置,但是后面添加的元素将在该元素后面
list.add(u5);

System.out.println("linkedList的第一个元素: "+list.getFirst()+","+list.get(0));
System.out.println("查看集合所有元素");
for (Object ob : list) {
System.out.println(ob);
}

//移除元素
System.out.println("移除元素");
list.removeLast();//移除最后一个元素
for (Object ob : list) {
System.out.println(ob);
}


5-Set集合
存储的元素是无序的、不可重复的

主要实现类:
HashSet:可以添加null值,线程不安全
LinkedHashSet:遍历时效率比较高
TreeSet:存入的元素需要排序,按照指定的顺序遍历

举例:
// set集合无序,不可重复
Set set=new HashSet();
set.add("呵呵");
set.add("呵呵");
set.add("cc");
set.add("哈哈");
System.out.println("集合大小:"+set.size());

//如何获取集合元素?迭代set集合元素
Iterator it=set.iterator();

while(it.hasNext()){
String s=(String)it.next();
System.out.print(s+" ");
}

6-Map接口

1)Map用于保存具有映射关系的数据(key-vlaue)。
Map的key不允许重复

Map实现类:HashMap、LinkedHashMap、
TreeMap、Hashtable(Properties)
2)接口常用方法
Object put(Object key, Object val) 以“键-值对”的方式进行存储
Object get (Object key) 根据键返回相关联的值,如果不存在指定的键,返回null
Object remove (Object key) 删除由指定的键映射的“键-值对”
int size() 返回元素个数
Set keySet () 返回键的集合
Collection values () 返回值的集合
booleancontainsKey(Object key) 如果存在由指定的键映射的“键-值对”,返回true

举例:
//创建Map的实例
Map<String,String> map=new HashMap<String,String>();


//添加数据到map中
map.put("s001", "tom");
map.put("s002", "lucy");
map.put("s002", "lily");


//map中key不可重复
System.out.println("map大小:"+map.size());


//获取map中元素,需要强转
String s2=(String)map.get("s002");
System.out.println("获取map中元素:"+s2);


//判断集合中是否存在某个key
if (map.containsKey("s001")) {
System.out.println("s001存在");
}

//判断集合中是否存在某个value
if(map.containsValue("lily")){
System.out.println("value:lily存在 ");
}

//获取key集合
Set<String> set=map.keySet();
System.out.println("循环打印key的集合");
Iterator<String> it=set.iterator();
while (it.hasNext()) {
System.out.print(it.next()+" ");

}

//获取value集合
System.out.println(" 循环打印value值的集合");
Collection<String> values=map.values();//map中value的集合
Iterator<String> it2=values.iterator();
while(it2.hasNext()){
System.out.print(it2.next()+" ");
}

3)Map遍历
迭代器Iterator实现遍历
增强性for循环

7-泛型集合
解决强制类型转换时容易出现的异常问题
保证了数据的安全
使用泛型不需要墙砖

举例:
Map<String,User> map=new HashMap<String,User>();
//添加
map.put("u001",new User("admin","admin"));
map.put("u002",new User("user","user"));

//获取map中元素的键
User u= (User)map.get("u002");


//增强型for迭代key的集合
for (String key:map.keySet()) {
System.out.println("key="+key);
System.out.println("value="+map.get(key));
}

//增强型for迭代value的集合
for (User value:map.values()) {
System.out.println(value);
}

 

 


举例:public static void main(String[] args) {
HashMap<String, String> hmap=new HashMap<String, String>();
hmap.put("1001", "学生A");
hmap.put("1002", "学生B");
hmap.put("1003", "学生C");
Set<String> keySet=hmap.keySet();//获取键的集合
Collection<String> values=hmap.values();//获取值的集合
for(String sno:hmap.keySet()){
System.out.println(hmap.get(sno));
}
}





























































































































































































































































以上是关于java基础---集合的主要内容,如果未能解决你的问题,请参考以下文章

java基础第十天_集合

Java基础_集合

集合框架基础知识-----java基础知识

[Java基础]Map集合基础

java基础-004

Java基础19:Java集合框架梳理