Java集合(一)





对应的子类:

 

List:

AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

 

Queue:

AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

 

Set:

AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet

 

Map:

AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap


集合:
用数组就可以了,为什么还需要学习集合呢?
1. 因为数组是定长的,不容易修改其长度。[数组的缺点之一]
2. 数组里存放的元素类型必须一致。[数组的缺点之二]


而集合则可以弥补这两个缺点。


ArrayList的使用
public class Test {
public static void main(String[] args) {
/*
 创建一个集合,该集合的类型是ArrayList
 ctrl+shitf+o: 快速导包
 ArrayList的特点:
 1. ArrayList这个集合是有序且可重复的
 2. ArrayList的内部数据结构是使用"数组"实现的
*/
ArrayList list = new ArrayList();

// ArrayList怎么添加数据呢?这里的数据指的就是对象
// ArrayList添加对象(使用add方法)
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");

/*
如何遍历ArrayList集合里的数据?有两种方式:
1. 使用迭代器Iterator
2. 使用增强for循环
*/
/*
Iterator it = list.iterator();
// it.hasNext() 看一下集合里有没有下一个元素,如果有则返回true,没有则返回false
// it.next() 取出元素
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj); // Alt+/
}
*/
// 增强for循环专门用来循环数组和集合
for(Object obj: list)
System.out.println(obj);
/* 
语法:
for(类型 变量名: 集合或数组) {
}
*/

// ArrayList的删除
list.remove(0);

// ArrayList修改元素
list.set(0, "Y");
}
}




LinkedList的使用
public static void main(String[] args) {
/*
LinkedList集合的特点:
1. 有序的,可重复的
2. 数据结构是使用“链表”实现的
*/
// 创建一个LinkedList集合
LinkedList link = new LinkedList();
link.add("A");
link.add("B");
link.add("C");
link.add("D");

link.remove(0);

link.set(0, "XXYY");

for(Object obj: link)
System.out.println(obj);

}




HashSet示例:
public static void main(String[] args) {
/*
HashSet集合的特点:
1. 无序的,不可重复
2. 数据结构使哈希表实现的(再说底层一点,这个哈希表是使用“链表+数组”来实现的)

HashSet怎么做到不可重复的?
调用放进去对象的equals()方法来判断对象是否重复
为了加快判断对象是否重复的速度,强烈推荐对象实现equals方法的同时,也实现hashcode方法
*/

HashSet hs = new HashSet();
String a = new String("A");
String b = new String("A");
hs.add(new Person());

for(Object obj: hs)
System.out.println(obj);
}






Map集合的使用示例:
public static void main(String[] args) {
/*
HashMap集合的特点:
1. 专门用来存放键值对(key-value)
2. HashMap的Key是使用Set集合来存放的,所以Key里的元素是“无序,不可重复”
*/

HashMap<String, String> map = new HashMap<String, String>();

// 对Map集合放数据 put
// 左边称为键key,右边称为值value
map.put("zhangsan", "12345");
map.put("lisi", "xxyy");
map.put("wanwu", "5201314");

// 根据key获得一个value
Object obj = map.get("zhangsan");
System.out.println(obj);

/*
难点:如何遍历HashMap集合
1. 使用keySet()和get()方法组合来遍历HashMap集合
2. 使用entrySet()方法来遍历HashMap集合
总结:推荐使用第二个方法,因为它是速度最快的。
*/
// 第一个方法
// 把HashMap集合里的key全部放到一个Set集合里面。
// Set keys = map.keySet();
// for(Object key: keys) {
// Object value = map.get(key);
// System.out.println(key + "=" + value);
// }

// 第二个方法
Set<Map.Entry<String, String>> entrySets = map.entrySet();
for(Entry<String, String> en: entrySets) {
System.out.println(en.getKey() + "=" + en.getValue());
}


// ArrayList list = new ArrayList();
// list.add("zhangsan 12345");
}

 

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值