Programmer Log11[JAVA集合类]_19.10.28

1.Java类集实际上就属于动态对象数组
Collection接口:public boolean add(E e); 向集合中添加数据
public Iterator iterator(); 取得iterator对象,用于集合的输出
一般情况下会使用其子接口:List(允许数据重复) Set(不允许数据重复)

2.List接口

两个重要的扩充方法:
public E get(int index); 根据索引取得保存数据
public E set(int index,E element); 修改数据
三个子类:
ArrayList Vector LinkedList
最终操作以接口为主,所有方法只参考接口中定义的方法即可
以后集合里保存最多的会是简单java类

3.Set接口
两个子类:
HashSet(无序存储(常用)) TreeSet(有序存储:使用升序排列模式完成)

4.Comparable是内部排序接口
public interface Comparable{ public int compareTo(T o);}
compareTo返回值小于0,表示当前对象小于比较对象
等于0,表示当前对象等于目标对象
大于0,表示当前对象大于比较对象
Comparator是外部排序接口
5.HashSet判断重复元素的方法:
hash码:public native int hashCode(); 返回对象的hashCode值
对象比较:public boolean equals(Object obj);
在判断时必须两个都相同才判断为相同。如果两个对象equals,那么他们的hashCode必相等;但hashCode相等,不一定equals.
6.Collections是一个集合操作的工具类,包含有集合反转、排序等操作。
Collections.addAll(list,“A”,“B”,“C”);
Collections.reverse(list);
7.java里有一种属性文件定义为:*.properties,文件里内容的保存形式是key=value.
要对文件里面的内容进行更改,就要用Properties类来完成
public synchronized Object setProperty();设置属性
public String getProperty(String key);
public String getProperty(String key,String defaultValue);取得属性
将属性输出到一个文件里:
File file = new File(“Users/test.properties”);
properties.store(new FileOutputStream(file),“test.properties”);
通过属性文件读取内容:
properties.load(new FileInputStream(file));
8.集合输出
8.1 迭代输出:Iterator(重要)
Iterator接口里面实际有三个方法:
public boolean hasNext();//判断是否有下一个元素
public E next();//取得当前元素
public default void remove();//删除元素

public class MyIterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("Bit");
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
          String str = iterator.next();//取得当前元素
            System.out.println(str);
        }
    }
}

8.2 双向迭代接口ListIterator(由List接口支持)
public biilean hasPrevious();//判断是否有上一个元素
public E previous();//取得上一个元素
//如果想要从前往后输出,一定要先从前往后输出

public class MyIterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("Bit");
        ListIterator<String> listIterator = list.listIterator();
        while(iterator.hasNext()){
            System.out.println(listIterator.next()+"、");
        }
        while(iterator.hasPrevious()){
            System.out.println(listIterator.previous()+"、");
        }
    }
}

8.3 Enumeration(接口)枚举输出
public boolean hasMoreElements();//判断是否有下一个元素
public E nextElement();//取得元素
public Enumeration elements();//取得接口对象,用Vector类的对象调用此方法
8.4 foreach输出
for(String str : list){System.out.println(str);}

9.集合中的Stack类和Queue接口
Stack类(Stack stack = new Stack<>();)
public E push(E item);//入栈操作
public synchronized E pop();//出栈操作
public stnchronized E peek();//观察栈顶元素
Queue接口,由LinkedList类实现(Queue queue = new LinkedList<>()?
public E poll();//按照队列取出内容

10.Map集合
Collection集合用来进行单个对象的保存,而如果要进行一对对象的保存就要用Map集合来完成。这两个对象是key=value这种结构。
10.1 Map接口中的方法
public V put(K key,V value);//向Map中追加数据
public V get(Object key);//根据key取得对应的value
public Set keySet();//取得所有key的信息
public Collection values();//取得所有value的信息
public Set<Map,Entry<K,V>> entrySet();//将Map集合变成Set集合
10.2 Map接口的子类—HashMap
10.2.1 HashMap内部实现基本点分析
10.3 Hashtable子类
Hashtable与HashMap(优先选择)的区别:
Hashtable同步处理、性能较低,线程安全,key和value都不能为空
HashMap异步处理,性能高,线程不安全,允许存放null(有且只有一个)
10.4 ConcurrentHashMap子类
10.5 Map集合使用Iterator输出
因为Map接口没有iterator()方法,所以Map集合的输出走的是间接方法:先将Map集合转变为Set集合,再进行输出

package www.bit.java.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestDemo {
   public static void main(String[] args) {
       Map<Tnteger,String> map = new HashMap<>();
       map.put(1,"Hello");
       map.put(2,"Bit");
       map.put(3,"Java");
       Set<Map<Integer,String>> set = map.entrySet();
       Iterator<Map.Entry<Integer,String>> iterator = set.iterator();
       while(iterator.hasNext()){
           Map.Entry<Integer,String> entry = iterator.next();
           System.out.println(entry.getKey()+"="+entry.getValue());
       }
       }

10.6 TreeMap
TreeMap 是一个可以排序的Map子类,它是按照Key的内容排序的。

11.Stream流
11.1 Collection改进
Collection在JDK1.8之后也定义了一些普通方法

default void forEach(Consumer<? super t>action)


   List<String> list = new ArrayList<>();
   Collectiions.addAll(list."Java","C++","Python","JavaScript");
   list.forEach(System.out::println);

public void stream();(重要方法)


   List<String> list = new ArrayList<>();
   Collectiions.addAll(list."Java","C++","Python","JavaScript");
   Stream<String> stream = list.stream();
   System.out.println(stream.count());
   System.out.println(stream.filter((e)->e.contains("Java")).count());//统计出这些数据中带有Java的个数

11.2 Stream接口中的两个操作方法(???)
public Stream limit(long maxSize);//设置取出最大内容
public Stream skip(long n);//跳过的数据量
11.3 MapReduce模型
MapReduce模型是整个Stream的核心所在。MapReduce也是由两个阶段所组成:
1.map():指的是针对于数据进行先期的操作处理,比如加减运算
2.reduce():进行数据的统计分析

package www.bit.java.test;

import java.util.ArrayList;
import java.util.List;
public class TestDemo {
  public static void main(String[] args) {
    List<Order> orderList = new ArrayList<>();
    orderList.add(new Order("Iphone", 8999.99, 10));
    orderList.add(new Order("外星⼈笔记本", 12999.99, 5));
    orderList.add(new Order("MacBookPro", 18999.99, 5));
    orderList.add(new Order("Java从⼊⻔到放弃.txt", 9.99, 20000));
    orderList.add(new Order("中性笔", 1.99, 200000));
    double allPrice = orderList.stream().map((obj) -> obj.getPrice() *
    obj.getAmount()).reduce((sum, x) -> sum + x).get();
    System.out.println("所花费的总数额为: "+allPrice);
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值