数组和集合

数组

注:多维数组每一个维度的长度不一定一样长;

例如: int a[][] = new int[3][];
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3];//正确
int t[][] = new int[][4];//非法
一维数组: int[] num=new int[10];
二维数组: int[][] nums=new int[2][3];//动态初始化
int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}} //静态初始化
长度: num.length();长度不能改变

集合

List集合

创建:List list=new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(“HAHAHAHA”);
List数组长度:num.size();长度可以改变
数组的遍历:for循环;foreach;迭代器

for循环遍历
for(int i=0 ; i<list.size();i++){
 List kc = (List) list.get(i);
 System.out.println("结果:"+kc.id+":"+kc.name+";");
}
foreach 遍历
for(Object obj : List){
            System.out.println("课程:"+obj.id+":"+obj.name+";");
        }
使用迭代器进行相关遍历
 Iterator<String> ite=list.iterator();
 while(ite.hasNext())//判断下一个元素之后有值
 {
     System.out.println(ite.next());
 }
使用set方法修改元素
   public void testModify(){
        beixuan.set(0, new KeCheng("7","毛概"));
    }
删除一个list中的元素,用remove()方法;删除list类型的数组用removeAll();

注:remove()方法有两种。1. remove(Object element)方法只在当前集合中按顺序移除一个元素。即使后边还有 与 element 相同的元素。也不再删除;2. remove(index)实例如下;

list.remove(list.get(0));
语法 removeAll(collection c)删除集合索引 index 处的元素,没有带下表的方法
List list1 =new ArrayList();
List list2 =new ArrayList();
list.add("aa");
list.add("bb");
list2.add(list1);//    list2的长度为1
//处代码通过 add()方法将 list1 添加到 list2 集合中,注意add()方法加入的长度为1 
即把此前的 list1 当做一个元素集合来处理,并且以数组形式显示
list2.remove(0);// 删除成功
list2.remove(list1);//失效
list2.removeAll(list1);//删除成功
注:一个数组添加到另一个数组:list1.addAll(list);同removeAll()方法一样添加的只能是一个集合对象;而remove()括号里只能是一个下表或者元素。用一个集合add()方法添加另一个集合也是把那个集合作为一个元素,长度为集合的个数;一般用addAll()方法,长度为集合总的元素长度;
List list1 =new ArrayList();
List list2 =new ArrayList();
list.add("aa");
list.add("bb");
list2.add("11");
list2.add("22");
list2.add(1,list1);
syatem.out.print(list2);
输出结果为:aa,[11,22],bb

Map集合

创建:Map<String ,String> map=new HashMap<String,String>();
map.put(“1”, “value1”);
map.put(“2”, “value2”);
map.put(“3”, “value3”);
遍历:尤其是容量大时

1. 通过Map.entrySet遍历key和value
  for (Map.Entry<String, String>  entry : map.entrySet()) {
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }
2. 通过Map.values()遍历所有的value,但不能遍历key
  for (String v : map.values()) {
   System.out.println("value= " + v);
  }

Set集合

set存数据

创建Set set = new HashSet();(和list集合一样,但它里面不能有重复数据)
set.add(“JAVA”);
set.add(“C”);
set.add(“C++”);

set遍历

同list集合一样,三种遍历方式;

注:将set集合转换成list,可以找到指定位置的元素;将list转化为set,可以去重;
List list = new ArrayLsit(set);
for(int i=0 ;i<list.size(); i++){
	system.out.print(list.get(i));
}
 public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Integer(1));
        list.add(new Integer(3));
        list.add(new Integer(3));
        list.add(new Integer(5));
        list.add(new Integer(5));

        List list2 = transListToSet(list);

        for (Object integer : list2) {
            System.out.println("integer = " + integer);
        }  // 1 3 5
    }

    public static List transListToSet (List list) {
        HashSet set = new HashSet();
        set.addAll(list);
        return new ArrayList(set);
    }

set特点:无序,不重复;

总结:

1.set集合的底层运用的是hashSet,hashSe实际上是一个hashmap实例,只允许放一个null元素,不同步
2. 保证不重复(去重): 运用equals()方法判断
3.Set 和Map的关系:
set代表无序,不能重复的集合。Map代表Key-Value键值对组成的集合,是一种关联数组。Map的key 不能冲重复,没有顺序。所以,把Map的所有key组合起来就是set.

TreeMap 底层是用红黑树来存储。每个Entry对应树的一个节点,TreeMap元素默认从小到达排序。V put(Key k, Value v)实质是二叉排序树的插入算法
ArrayList底层是数组 list是线性表的数据结构,ArrayList是顺序存储的线性表
LinkedList底层是链表;是链式存储的线性表,实质是双向链表,实现了List和Deque接口。Deque代表双端队列,既可以当做队列也可以当作栈。
Vector提供synchronized修饰方法,是线程安全版本的ArrayList,lVector 本质是一个数组,其实所有集合都是数组

资源下载链接为: https://pan.quark.cn/s/dab15056c6a5 用户画像(User Profile)是大数据领域关键概念,是基于用户多维度信息如行为数据、偏好、习惯等构建的虚拟代表。它是数据分析重要工具,能助企业深度理解用户,实现精准营销、个性化推荐及服务优化。其源码涵盖以下内容:一是数据收集,需大量数据支撑,常借助Flume、Kafka等日志收集系统,实时或批量收集用户浏览记录、购买行为、搜索关键词等数据;二是数据处理与清洗,因数据源杂乱,需用Hadoop、Spark等大数据处理框架预处理,去除噪声数据,统一格式,保障数据质量;三是特征工程,为构建用户画像关键,要挑选有意义特征,像用户年龄、性别、消费频率等,且对特征编码、标准化、归一化;四是用户聚类,用K-means、DBSCAN等算法将用户分组,找出行为模式相似用户群体;五是用户建模,借助决策树、随机森林、神经网络等机器学习模型对用户建模,预测其行为或需求;六是用户画像生成,把分析结果转为可视化用户标签,如“高消费能力”、“活跃用户”等,方便业务人员理解。 其说明文档包含:一是项目背景与目标,阐述构建用户画像原因及期望效果;二是技术选型,说明选用特定大数据处理工具技术栈的理由;三是数据架构,描述数据来源、存储方式(如HDFS、数据库)及数据流图等;四是实现流程,详述各步骤操作方法逻辑,含代码解释及关键函数功能;五是模型评估,介绍度量用户画像准确性有效性方式,像准确率、召回率、F1分数等指标;六是应用场景,列举用户画像在个性化推荐、广告定向、客户服务等实际业务中的应用;七是注意事项,分享开发中遇问题、解决方案及优化建议;八是结果展示,以图表、报表等形式直观呈现用户画像成果,展现用户特征行为模式。 该压缩包资源对学习实践用户画像技术价值大,既可助人深入理解构建过程,又能通过源码洞察大数据处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值