JAVA 集合操作总结

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()                 当前运行线程释放 处理器资源

原文地址:https://www.cnblogs.com/subtract/p/8989363.html

时间: 2024-08-30 15:51:56

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

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

public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(34); list.add(55); list.add(56); list.add(89); list.add(12); list.add(23); list.add(126); System.out.println(list); //对集合进行排序 Collections.sort(lis

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

Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Collection; import day02.Point; /** * 操作集合元素相关方法 * @author adminitartor * */ public class Collection_Remove { public static void main(String[] args) { C

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

申明: 实习生的肤浅理解,如发现有错误之处,还望大牛们多多指点 废话 其实我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList<XXXXX>(); 但是我仅仅只是了解,list这个类是一个可变长用来存储的对象实例的类,我甚至觉得这个List对象可以理解成数组,但是却又与java中咱们正常理解的数组很多的不同,比如说,他的长度可以随着需要自动增长,比如说,实例化一个List类就和咱们声明数组的时候是不一样的! 今天的实习生活

scala集合和Java集合对应转换操作

用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case, scala.collection.Iterable <=> java.lang.Iterable scala.collection.Iterable <=> java.util.Collection scala.collection.Iterator <=> java.util.{ Iterator, Enumeration } scala.collection.mutable.Buff

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

Java 集合

在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素. 集合框架提供了遍历集合的以下方法: 使用迭代器 使用for-each循环 使用forEach()方法 使用迭代器 迭代器可以对集合执行以下三个操作: 检查是否有尚未访问的元素. hasNext() 检查是否有下一个访问的元素. next() 删除集合的最后访问元素. remove() 例子1 使用迭代器打印列表的所有元素: import java.util.ArrayLis

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.

Java集合

JAVA集合小结   有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 几个面试常见问题:1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?   A:Vector和HashT

Java集合总览

这篇文章总结了所有的Java集合(Collection).主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式. Arrays Array是Java特有的数组.在你知道所要处理数据元素个数的情况下非常好用.java.util.Arrays 包含了许多处理数据的实用方法: Arrays.asList:可以从 Array 转换成 List.可以作为其他集合类型构造器的参数. Arrays.binarySearch:在一个已排序的或者其中一段中快速查找. Arrays.copyOf:如果你