1.Collection

1.基本操作

对集合的基础操作

1.boolean add(Object o) //添加对象到集合
2.boolean remove(Object o) //删除指定的对象
3.int size() //返回当前集合中元素的数量
4.boolean contains(Object o) //查找集合中是否有指定的对象。
5.boolean isEmpty() //判断集合是否为空
6.Iterator iterator() //返回一个迭代器 操作整个集合的方法 7.boolean containsAll(Conllection c) //查找集合中是否有集合C中的元素
8.boolean addAll(Conllection c) //将集合c中的所有元素添加给该集合
9.void clear() //删除集合中所有元素
10.void removeAll(Collection c) //从集合中也有的元素
11.void retainAll(Collection c) //从集合中删除集合c中不包含的元素. 对数组操作的方法 12.Object[] toArray() //返回一个包含集合中所有元素的数组

2.集合中的遍历:

1.for-each语法
Collection<Person> persons = new ArrayList(<Person>)();
for(Person person :persons){
Sys.out.println(person.name);
}

2.使用迭代器Iterator

Collection<Person> persons = new ArrayList<Person>();
Iterator iterator = persons.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next);
}

3.主要子接口对象

1.Set(无序、不能重复)

Eenuset SortedSet HashSet TreeSet

Set里面存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单的把对象加入集合中。

2.List(有序、可重复)

List里面存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一些列和索引相关的方法,查询速度快。

ArrayList LinkedList Vector

3.Queue

Deque priorityQueue ArrayDeque

2.Map

基本方法:

1. boolean put(key,value)   //添加一个map
2. boolean putAll(Map m) //存入一个map
3. boolean remove(key) //删除某一个值
4. boolean clear() //清除所有内容
5. value get(key) //根据键获取某个值
6. boolean isEmpty() //判断是否为空
7. boolean containsKey(key) //判断集合中是否包含指定的key
8. boolean containsValue(value) //判断集合中是否包含某一个值
9. Int size() //Map的长度

键值对操作

10.Set KeySet() //返回所有key对象的集合
11.Collection values() //获取所有的值
12.Set entrySet() //将map 集合中的键值映射关系打包成一个对象。

遍历:

Map<Integer,Integer> map = new HashMap<Integer Integer>();
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
System.out.println("key="+entry.getKey()+",Value="+entry.getValue());
} Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍历map中的键
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//遍历map中的值
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}

使用Iterator遍历

使用泛型:

Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().interator();
while(entries.hasNext()){
Map.Entry<Integer,Integer> entry = entries.next();
System.out.println("Key = "+entry.getKey()+",Value="+entry.getValue());
}

不使用泛型:

Map map = new HashMap();
Iterator entries = map.entrySet().interator();
while(entries.hasNext()){
Map.entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("key = "+key+",value="+value);
}

3.线程安全和不安全

1.加入join 控制

 public static void main(String[] args) throws InterruptedException {
List<String> mylist = new Vector<String>();
List<Thread> myThread = new ArrayList<Thread>();
for(int i=1;i<=5;i++) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10 ; j++) {
mylist.add("a");
}
}
});
t.start();
myThread.add(t);
}
for (Thread t:myThread) {
t.join();
}
System.out.println(mylist.size());
}

2.同步的ArrayList

Collections.synchronizedList(new ArrayList() )

public static void main(String[] args) throws InterruptedException {
List<String> mylist = Collections.synchronizedList(new ArrayList<String>());
List<Thread> myThread = new ArrayList<Thread>();
for(int i=1;i<=5;i++) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10 ; j++) {
mylist.add("a");
}
}
});
t.start();
myThread.add(t);
}
for (Thread t:myThread) {
t.join();
}
System.out.println(mylist.size());
}

3.同步代码块

加入synchronized 锁住代码块

public static void main(String[] args) throws InterruptedException {
List<String> mylist = new Vector<String>();
for(int i=1;i<=5;i++) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
synchronized (mylist){
for (int j = 0; j < 10 ; j++) {
mylist.add("a");
}
System.out.println(mylist.size());
} }
});
t.start();
}
}

3.HashMap HashSet HashCode

HashSet是根据hashMap来实现的

TreeSet是根据TreeMap来实现的 TreeMap默认支持排序

1.判断hashMap里面的对象是否相等
package core;

public class Product {
private int prodID;
private String ProdName; public Product(int prodID, String prodName) {
this.prodID = prodID;
ProdName = prodName;
} public int getProdID() {
return prodID;
} public void setProdID(int prodID) {
this.prodID = prodID;
} public String getProdName() {
return ProdName;
} public void setProdName(String prodName) {
ProdName = prodName;
} @Override
public int hashCode() {
return (this.getProdName()+String.valueOf(this.getProdID())).hashCode();
} @Override
public boolean equals(Object obj) {
Product getObj = (Product)obj;
if(this.getProdID()==((Product) obj).getProdID() && this.getProdName()==((Product) obj).getProdName()){
return true;
}else{
return false;
}
}
}

2.TreeMap进行排序

Map<String,Integer> user = new TreeMap<String,Integer>((String o1,String o2)->{
return o2.length()-o1.length()+o2.compareTo(o1); //加上Asics码表比较
});
user.put("smartom",20);
user.put("zhangsan",18);
user.put("wangwu",100);
user.put("lisi",20);
for (Map.Entry<String,Integer> entry:user.entrySet()) {
System.out.println(entry.getKey()+":"+entry.getValue());
}

3.数据结构二叉树的建立

package BTree;

import java.util.Comparator;

public class BTree<T> {
Node<T> root = null; //支持comparator接口
Comparator<T> comparator;
public BTree(Comparator<T> c){
comparator = c;
} public BTree() { } //插值
public void put(T data){
if(root ==null){
root = new Node<T>(data);
}else{
// leftNode
root = addNode(root,data);
}
}
public void list(){
list(root);
}
public void list(Node n){
if(n!=null){
list(n.leftNode);
System.out.println(n.selfdata.toString());
list(n.rightNode);
}
} Node<T> addNode(Node<T> node,T data){
if(node == null){ return new Node<T>(data);
}
int result = 0; //是那种比较对象
if (comparator!=null) {
result = comparator.compare(data,node.selfdata);
}else{
Comparable<T> comparable = (Comparable<T>)data;
result = comparable.compareTo(node.selfdata);
} if(result<0){ //小就放左节点
node.leftNode = addNode(node.leftNode,data);
}else if(result > 0){
node.rightNode = addNode(node.rightNode,data);
}
return node;
}
class Node<T>{
private Node<T> leftNode= null;
private Node<T> rightNode = null;
private T selfdata; public Node(T selfdata) {
this.selfdata = selfdata;
} }
}
BTree<Product> bTree = new BTree<Product>((Product o1,Product o2)->{
return o1.getProdID()-o2.getProdID();
});
bTree.put(new Product(101,"java图书"));
bTree.put(new Product(102,"php图书"));
bTree.put(new Product(1014,"node图书"));
bTree.put(new Product(103,"python图书"));
bTree.put(new Product(105,"esma图书"));
bTree.put(new Product(102,"html图书"));
bTree.list();
BTree<String> bTree2 = new BTree<String>();
bTree2.put("3");
bTree2.put("5");
bTree2.put("7");
bTree2.put("9");
bTree2.put("5");
bTree2.list();

Queue列队

Queue

线程

常用方法:

Thread

Thread(String name)

Thread(Runable target)

Thread(Runable target,String name)

线程的方法:

void start()                        启动线程
static void sleep(long millis)
static void sleep(long millis,int nanos) 线程休眠
void join() 是其他线程等待当前线程终止
void join(long millis)
void join(long millis,int nanos)
static void yield() 当前运行线程释放 处理器资源

JAVA 集合操作总结的更多相关文章

  1. JAVA集合操作的利器:CollectionUtils

    使用 CollectionUtils 中四个方法之一执行集合操作.这四种分别是 union(),intersection();disjunction(); subtract(); 下列例子就是演示了如 ...

  2. JAVA集合操作异常 ---------Collections.unmodifiableCollection

    1.问题原因 这两天在做开发的时候,在一个首页的列表哪里操作了ArrayList集合,在做递归删除的时候用的是Iterator对象(至于为什么用,来个链接https://blog.csdn.net/m ...

  3. java 集合操作小结

    Map<String,String> m1=new HashMap<String,String>(); m1.put("zara", "name1 ...

  4. Java集合操作精华总结

    一.Set1.HashSet boolean add(E e) 添加 访问 boolean remove(E e) 删除 Iterator<E> iterator 遍历 int size( ...

  5. Java集合操作类Collections的一些常用方法

    public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); ...

  6. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  7. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  8. java的list集合操作List<T>转化List<Long>

    java的list集合操作List<T>转化List<Long> package com.google.common.collect; import com.google.co ...

  9. java集合并发操作异常解决方法:CopyOnWriteArrayList

    一.我们知道ArrayList是线程不安全的,请编写一个不安全的案例并给出解决方案 HashSet与ArrayList一致 HashMap HashSet底层是一个HashMap,存储的值放在Hash ...

随机推荐

  1. 『流畅的Python』第1~4章笔记_数据结构、编码

    由于1~4章内容零散且基础,所以统计一下涉及到的内容,记录一下,方便查阅(第一张图右键新页面打开即可看到清晰大图)

  2. 『OpenCV3』滤波器边缘检测

    一.原理简介 边缘检测原理 - Sobel, Laplace, Canny算子 X方向Sobel算子 -1 -2 -1 0 0 0 1 2 1 Y方向Sobel算子 -1 0 1 -2 0 2 -1 ...

  3. jquery获取选中值

    1.获取一组radio被选中项的值:var item = $('input[name=items][checked]').val(); 2.获取select被选中项的文本 :var item = $( ...

  4. react-thunk的使用流程

    react-thunk作用:使我们可以在action中返回函数,而不是只能返回一个对象.然后我们可以在函数中做很多事情,比如发送异步的ajax请求. 这就是react-thunk的使用方法.接受一个d ...

  5. vs2013+qt5.3.2+pcl1.8.0+osg2.3开发环境配置

    一.安装vs2013 注意:最好安装VS2013 Update 5,不然有些项目会报莫名其妙的异常. VS2013 Update 5下载:https://pan.baidu.com/s/1TAU5Qi ...

  6. 安装tifffile

    python的opencv和PIL不能很好地处理tiff图像,所以我就转用tifffile 但是tifffile也装了很近,因为我是远控别人的电脑,所以看不太清报错,就自己瞎猜,不过还是装好了 首先去 ...

  7. String 的方法总结

    1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码.    strObj.charCodeAt(index)    var str = "ABC";   ...

  8. Java SubString截取字符串

    在String中有两个substring()函数,如下: 一:String.substring(int start) 参数: start:要截取位置的索引 返回: 从start开始到结束的字符串 例如 ...

  9. 十年京东Java程序员的工作总结,写给迷茫中的你!

    很多年前,刚刚从大学毕业的时候,很多公司来校招.其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”.我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“.后来经历了几家 ...

  10. 微服务-开发框架之springboot by 大雄daysn

    目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...