java如果把Array中的数组的值进行相加呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如果把Array中的数组的值进行相加呢?相关的知识,希望对你有一定的参考价值。

你的意思是说比如数组里面有5个对象,现在要改为6个或者更多? 未来你学集合就知道了,不过我这里自己封装一个类,里面就是操作Object数组的,增删插入指定位置都有,代码如下:
public class MyList
private int size;
Object[] object = null;
Object[] temp;
int sequence = 0;

public MyList()
this(1);


public MyList(int size)
if (size <= 0)
throw new IllegalArgumentException("长度应大于0");
else
this.size = size;
this.object = new Object[this.size];



// Add, Insert, Delete, Find
public void add(Object obj)
if (obj == null)
throw new IllegalArgumentException("添加的对象不应为null");
else
if (sequence >= size)
this.size++;// 这里扩展空间方式随意,可以每次扩展两倍
temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, object.length);
object = temp;
temp = null;

object[sequence] = obj;
sequence++;



public void insert(int index, Object obj)
if (index < 0 || obj == null)
throw new IllegalArgumentException("插入的索引值应不小于0,并且插入的对象不应为null");
else
if (index == object.length)
add(obj);
else if (index > object.length)
throw new IllegalArgumentException("数据越界,插入的索引不应不在数组范围内");

if (sequence >= size)
this.size++;

temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, index);
temp[index] = obj;
System.arraycopy(object, index, temp, index+1, object.length-index);
object = temp;
temp = null;
sequence++;



public void delete(int index)
if (index < 0 || index>this.size)
throw new IllegalArgumentException("索引应在数组范围内");
else
temp = new Object[--this.size];
System.arraycopy(object, 0, temp, 0, index);
System.arraycopy(object, index+1, temp, index, object.length-1-index);
object = temp;
temp = null;
sequence--;



public Object find(int index)
if (index < 0 || index > this.size)
throw new IllegalArgumentException("索引应大于0或不大于集合元素数");
else
return object[index];



public int size()
return this.size;


追问

list_tr=维纳 开发二部 张三 type[1,0,0,0,0,0,0,2,1,8,0]
list_tr=维纳 开发二部 张三 type[1,0,0,0,0,0,0,2,1,8,0]
合并成:
list_tr=维纳 开发二部 张三 type[2,0,0,0,0,0,0,4,2,16,0]

追答

这不是将两个type数组里面的值加起来了吗,判断如果int或者基本类型的数组,就想起里面的值遍历出来进行相加,我不知道你这里是否判断数组名字一定要想同?
你这里的list_tr是什么类型数组? 里面有字符串,还有一个type数组?
把你的代码写全了,我突然觉得你这是javascript呢? 说明下语言。

追问

list_tr是ArrayList。现在是list_tr中存在多组数据,我现在是一条一条的比较。如果存在公司、部门、姓名相同的,就要把这些数组合并。

追答

里面多组数据不是同类型么? 就是说虽然数据的值不同,但是里面不都是 公司,部门,姓名这种数据么? 如果数据都是一样的,这些明显可以是一个bean的属性, 是否能封装为bean?

追问

不能。这是数显的全部动态显示。所以不能

追答

动态也是可以封装为bean的,不过这里不讨论这个了。
先循环list_tr
将里面的公司,部门,姓名三个数据封装到一个HashMap集合里,key是三个数据字符串拼一起,值是type,比如:
map.put(公司+部门+姓名 , type);
判断map中是否有相同的key,如果有进行type相加,type相加,可以遍历type数组,进行每个值相加。
等于间接做一个小缓存!

参考技术A 你运行一下,看看是不是你要的算法呢?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class A
private String company;
private String dept;
private String person;
private Integer[] type;
public String getCompany()
return company;

public void setCompany(String company)
this.company = company;

public String getDept()
return dept;

public void setDept(String dept)
this.dept = dept;

public String getPerson()
return person;

public void setPerson(String person)
this.person = person;

public Integer[] getType()
return type;

public void setType(Integer[] type)
this.type = type;

public A(String company, String dept, String person, Integer[] type)
this.company = company;
this.dept = dept;
this.person = person;
this.type = type;

@Override
public boolean equals(Object o)
A a = (A) o;
if (a.company.equals(this.company) && a.dept.equals(this.dept)
&& a.person.equals(this.person))
return true;

return false;

@Override
public String toString()
return this.company + " " + this.dept + " " + this.person + " "
+ Arrays.toString(this.type);

public A add(A a)
Integer[] temp = null;
int i = 0;
if (this.equals(a))
for (int j : this.type)
if (temp == null)
temp = new Integer[a.type.length];

temp[i] = j + a.type[i];
i++;

return new A(this.company, this.dept, this.person, temp);

return null;

/**
*
* 测试
*
*/
public static void main(String[] args)
A a1 = new A("维纳", "开发二部", "张三", new Integer[] 1, 0, 0, 0, 0, 0, 0,
2, 1, 8, 0 );
A a2 = new A("维纳", "开发二部", "张三", new Integer[] 1, 0, 0, 0, 0, 0, 0,
2, 1, 8, 0 );
A a3 = new A("维纳", "开发二部", "李四", new Integer[] 1, 0, 0, 0, 0, 0, 0,
2, 1, 8, 0 );
A a4 = new A("维纳", "开发二部", "张三", new Integer[] 1, 0, 0, 0, 0, 0, 0,
2, 1, 8, 0 );
A a5 = new A("维纳", "开发二部", "李四", new Integer[] 1, 0, 0, 0, 0, 0, 0,
2, 1, 8, 0 );
List<A> l = new ArrayList<A>();
l.add(a1);
l.add(a2);
l.add(a3);
l.add(a4);
l.add(a5);
List<A> l2 = new ArrayList<A>();
for (A a : l)
if (!l2.contains(a))
l2.add(a);
continue;

for (int i = 0; i < l2.size(); i++)
if (l2.get(i).equals(a))
l2.set(i, l2.get(i).add(a));
// System.out.println(l2.get(i));



System.out.println(l2);

参考技术B 如何将数组我值相加对吧?
<script language="javascript">
var arr=new Array(1,2,3,4,5)
var x;
x=arr[0]+arr[1];
document.write(x);
</script>

举个简单的例子吧!将数组值取出来,再运算!
如上“X”的结果为3!
over!相信你可以的!追问

不是啊,是在后台处理。list中存在一个数组。要将里面的数据相加。是两条数据相加。例如:
维纳 开发二部 张三 type[1,0,0,0,0,0,1,5.6,0,8,0]
维纳 开发二部 张三 type[1,0,0,0,0,0,0,2,1,8,0]
合并后:
维纳 开发二部 张三 type[2,0,0,0,0,0,1,7.6,1,16,0]

追答

分别遍历数组,相加,我老师说的,你不懂,我也不会了!

参考技术C int sum=0;
for(int i=0; i<arr.length; i++)
sum+=arr[i];



System.out.println("sum="+sum);
参考技术D 你想问什么呢?追问

list_tr=维纳 开发二部 张三 type[1,0,0,0,0,0,0,2,1,8,0]
list_tr=维纳 开发二部 张三 type[1,0,0,0,0,0,0,2,1,8,0]
合并成:
list_tr=维纳 开发二部 张三 type[2,0,0,0,0,0,0,4,2,16,0]

二维数组相同键里的值相加

<?php 
header("Content-type: text/html; charset=utf-8");


$_data1=Array
(
    "0" => Array
        (
            "userid" => 1,
            "username" => ‘admin‘,
            "roleid" => ‘超级管理员‘,
            "has_number" => 23,
            "no_number" => 0,
            "all_number" => 92
        ),

    "1" => Array
        (
            "userid" => 5,
            "username" => ‘office‘,
            "roleid" => ‘总编‘,
            "has_number" => 56,
            "no_number" => 0,
            "all_number" => 56
        ),

    "2" => Array
        (
            "userid" => 6,
            "username" => ‘nyfzjt001‘,
            "roleid" => ‘编辑‘,
            "has_number" => 65,
            "no_number" => 6,
            "all_number" => 112
        )

    

);
$_data2=Array
(
    "0" => Array
        (
            "userid" => 1,
            "username" => ‘admin‘,
            "roleid" => ‘超级管理员‘,
            "has_number" => 23,
            "no_number" => 0,
            "all_number" => 92
        ),

    "1" => Array
        (
            "userid" => 5,
            "username" => ‘office‘,
            "roleid" => ‘总编‘,
            "has_number" => 56,
            "no_number" => 0,
            "all_number" => 56
        ),

    "2" => Array
        (
            "userid" => 6,
            "username" => ‘nyfzjt001‘,
            "roleid" => ‘编辑‘,
            "has_number" => 65,
            "no_number" => 6,
            "all_number" => 112
        )


    

);

//两数组值相加
$data=array();
function array_add($arr1,$arr2)
{
    foreach ($arr1 as $k1 => $v1) 
    {
        foreach ($arr2 as $k2 => $v2) 
        {
            if($k1==$k2)
            {
                $data[$k1][‘userid‘]=$v1[‘userid‘];
                $data[$k1][‘username‘]=$v1[‘username‘];
                $data[$k1][‘roleid‘]=$v1[‘roleid‘];
                $data[$k1][‘has_number‘]=$v2[‘has_number‘]+$v1[‘has_number‘];
                $data[$k1][‘no_number‘]=$v2[‘no_number‘]+$v1[‘no_number‘];
                $data[$k1][‘all_number‘]=$v2[‘all_number‘]+$v1[‘all_number‘];
            }
        }
        
    }

 return $data;

}

print_r(array_add($_data1,$_data2));


 ?>

 

以上是关于java如果把Array中的数组的值进行相加呢?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中array_merge函数与array+array的区别

按数组中的多个属性对对象进行分组,然后将它们的值相加

js 从数据库中获取一个字段的值是以逗号分割的一串数字,怎么把他们分开并相加

二维数组相同键里的值相加

PHP如何检查一个数组内是不是存在指定元素

PHP中array_merge和array相加的区别分析