javaset数组
A. java里面set,map,list的区别是什么(尽量详细)
java集合的主要分为三种类型:
Set(集)
List(列表)
Map(映射)
要深入理解集合首先要了解下我们熟悉的数组:
数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。
简单说下集合和数组的区别:(参考文章:《Thinking In Algorithm》03.数据结构之数组)
Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。
1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。
2、Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.array():array的复制。
若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。所以就要用到集合。
那我们开始讨论java中的集合。
集合分类:
Collection:List、Set
Map:HashMap、HashTable
B. java 多个set写出数组形式
public
static
void
main(string[]
args)
{
int[]
a={1,2,3};
int[]
b={2,3,1};
arrays.sort(b);
system.out.println(arrays.tostring(a).equals(arrays.tostring(b)));
}
如果楼主每个数组都排序的话,你可以用arrays.tostring(a)将里面的数组转换成string用string的equals判断下就能找到了.
这样的话,你写一个很简单的方法遍历下不就行了,不存在再存,存在就不存了
.
貌似也没什么好的方法了
C. java程序中数组去重的方法有哪些
在Java程序中去除数组重复元素的方法多种多样,以下为几种常用方法:
首先,使用Set集合去重。Set集合的特性是不允许重复元素,因此可以将数组元素加入到Set集合中,最后再将Set集合转换为数组,达到去除重复元素的目的。
其次,利用ArrayList的特性,将数组元素逐一添加至ArrayList中,同样可以实现去除重复元素。由于ArrayList内部实现原理与Set类似,因此具有类似的去重效果。
使用HashSet也是去除数组重复元素的有效方法。HashSet与Set集合类似,拥有不允许重复元素的特性,适用于快速去重操作。
对于需要保持元素添加顺序的场景,可选择使用LinkedHashSet。它不仅保证了元素的不重复性,还维护了元素的添加顺序,适用于在去重的同时保留原有元素顺序的场合。
使用TreeSet进行去重也是可行的。TreeSet内部基于红黑树实现,具有自动排序功能,且不允许重复元素。通过将数组元素加入至TreeSet中,再将其转换为数组,即可实现去重。
最后,使用双重循环方法去重。此方法较为基础,通过外层循环遍历数组元素,内层循环从外层循环的下一个元素开始比较,一旦发现重复元素则跳过。这种方法虽然简单,但效率较低,适用于数组元素数量较少的情况。
D. Java数组中重复数据的删除
java数组中去掉重复数据可以使用set集合,set本身内部是不保存重复的数据的,如下代码:
importjava.util.Arrays;
importjava.util.Set;
importjava.util.TreeSet;
publicclassceshi{
publicstaticvoidmain(String[]args){
int[]testArr={5,5,1,2,3,6,-7,8,6,45,5};//新建一个int类型数组
System.out.println(Arrays.toString(testArr));
Set<Integer>set=newTreeSet<Integer>();//新建一个set集合
for(inti:testArr){
set.add(i);
}
Integer[]arr2=set.toArray(newInteger[0]);
//数组的包装类型不能转只能自己转;吧Integer转为为int数组;
int[]result=newint[arr2.length];
for(inti=0;i<result.length;i++){
result[i]=arr2[i];
}
System.out.println(Arrays.toString(arr2));
}
}
运行结果如下:
E. java的数组里面可以放set吗
只要你的数组类型是set类型的就可以
F. Java中set方法传递一个数组,用get方法怎么获取数组中的内容
package test2;
import java.util.Arrays;
public class test2_test6 {
int[] i;
void setI(int[] i) {
this.i = i;
}
//两种方法
//第一种,直接打印数组
String getI_value1() {
return Arrays.toString(i);
}
//第二种,循环遍历
String getI_value2() {
StringBuilder s = new StringBuilder();
for (int i_value : i) {
s.append(i_value);
s.append(" ");
}
return s.toString();
}
public static void main(String[] args) {
int[] Array = {1, 2, 3, 4, 5};
test2_test6 t2_t6 = new test2_test6();
t2_t6.setI(Array);
System.out.println("第一种方法获取值:");
System.out.println(t2_t6.getI_value1());
System.out.println("第二种方法获取值:");
System.out.println(t2_t6.getI_value2());
}
}